diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 20202c9..db7e9b6 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -16,8 +16,8 @@ // 1. Nukes the root-owned temp cache // 2. Forces workspace ownership to the 'node' user // 3. Installs dependencies - "postCreateCommand": "sudo rm -rf /tmp/node-jiti && sudo chown -R node:node /workspaces/Wrangles.io-Docusaurus && cd my-docs-site && npm install", + "postCreateCommand": "sudo rm -rf /tmp/node-jiti && sudo chown -R node:node /workspaces/Wrangles.io-Docusaurus && cd wrangles-docs && npm install", // Starts the server automatically in a visible terminal - "postAttachCommand": "cd my-docs-site && npm start" + "postAttachCommand": "cd wrangles-docs && npm start" } \ No newline at end of file diff --git a/.github/agents/sync.md b/.github/agents/sync.md index 4e95ac7..022a693 100644 --- a/.github/agents/sync.md +++ b/.github/agents/sync.md @@ -11,19 +11,19 @@ You are the Wrangles.io documentation sync agent. Your job is to compare approve You may edit only these files: -- `my-docs-site/wrangle-docs/**/_sources/*.md` +- `wrangles-docs/wrangle-docs/**/_sources/*.md` - `.github/agents/sync.md` when the user explicitly asks to update this agent profile You must not edit: -- `my-docs-site/docs/**` -- `my-docs-site/wrangle-docs/*/*.md` category wrapper pages -- `my-docs-site/wrangle-docs/wrangle_template.md` -- `my-docs-site/docusaurus.config.js` -- `my-docs-site/sidebars*.js` -- `my-docs-site/src/**` -- `my-docs-site/package.json` -- `my-docs-site/package-lock.json` +- `wrangles-docs/docs/**` +- `wrangles-docs/wrangle-docs/*/*.md` category wrapper pages +- `wrangles-docs/wrangle-docs/wrangle_template.md` +- `wrangles-docs/docusaurus.config.js` +- `wrangles-docs/sidebars*.js` +- `wrangles-docs/src/**` +- `wrangles-docs/package.json` +- `wrangles-docs/package-lock.json` - Docker files, workflow files, database scripts, generated catalogs, or app code If a requested sync requires any file outside the allowed scope, stop and report the needed change instead of making it. @@ -117,7 +117,7 @@ For each wrangle in the requested category or sync run: After editing, run: ```bash -cd my-docs-site +cd wrangles-docs npm run build ``` @@ -140,91 +140,91 @@ Use this map as the only approved source-to-target list. Rows marked `TODO` are | Wrangle key | Source URL | Target file | | --- | --- | --- | -| `classify` | `https://wrangles.io/en/python/recipes/wrangles/standalone#classify` | `my-docs-site/wrangle-docs/ai/_sources/classify.md` | -| `generate.ai` | `TODO` | `my-docs-site/wrangle-docs/ai/_sources/ai.md` | -| `huggingface` | `TODO` | `my-docs-site/wrangle-docs/ai/_sources/huggingface.md` | -| `compare.lists` | `https://wrangles.io/en/python/recipes/wrangles/compare#lists` | `my-docs-site/wrangle-docs/compare/_sources/lists.md` | -| `compare.text` | `https://wrangles.io/en/python/recipes/wrangles/compare#text` | `my-docs-site/wrangle-docs/compare/_sources/text.md` | -| `similarity` | `https://wrangles.io/en/python/recipes/wrangles/standalone#similarity` | `my-docs-site/wrangle-docs/compare/_sources/similarity.md` | -| `compute.case_when` | `https://wrangles.io/en/python/recipes/wrangles/compute#case-when` | `my-docs-site/wrangle-docs/compute/_sources/case-when.md` | -| `math` | `https://wrangles.io/en/python/recipes/wrangles/standalone#math` | `my-docs-site/wrangle-docs/compute/_sources/math.md` | -| `python` | `https://wrangles.io/en/python/recipes/wrangles/standalone#python` | `my-docs-site/wrangle-docs/compute/_sources/python.md` | -| `compute.score_search_results` | `TODO` | `my-docs-site/wrangle-docs/compute/_sources/score-search-results.md` | -| `sql` | `https://wrangles.io/en/python/recipes/wrangles/standalone#sql` | `my-docs-site/wrangle-docs/compute/_sources/sql.md` | -| `convert.case` | `https://wrangles.io/en/python/recipes/wrangles/convert#case` | `my-docs-site/wrangle-docs/convert/_sources/case.md` | -| `convert.data_type` | `https://wrangles.io/en/python/recipes/wrangles/convert#data-type` | `my-docs-site/wrangle-docs/convert/_sources/data-type.md` | -| `convert.fraction_to_decimal` | `https://wrangles.io/en/python/recipes/wrangles/convert#fraction-to-decimal` | `my-docs-site/wrangle-docs/convert/_sources/fraction-to-decimal.md` | -| `convert.from_json` | `https://wrangles.io/en/python/recipes/wrangles/convert#from-json` | `my-docs-site/wrangle-docs/convert/_sources/from-json.md` | -| `convert.from_yaml` | `https://wrangles.io/en/python/recipes/wrangles/convert#from-yaml` | `my-docs-site/wrangle-docs/convert/_sources/from-yaml.md` | -| `convert.to_json` | `https://wrangles.io/en/python/recipes/wrangles/convert#to-json` | `my-docs-site/wrangle-docs/convert/_sources/to-json.md` | -| `convert.to_yaml` | `https://wrangles.io/en/python/recipes/wrangles/convert#to-yaml` | `my-docs-site/wrangle-docs/convert/_sources/to-yaml.md` | -| `create.bins` | `https://wrangles.io/en/python/recipes/wrangles/create#bins` | `my-docs-site/wrangle-docs/create/_sources/bins.md` | -| `create.column` | `https://wrangles.io/en/python/recipes/wrangles/create#column` | `my-docs-site/wrangle-docs/create/_sources/column.md` | -| `create.embeddings` | `https://wrangles.io/en/python/recipes/wrangles/create#embeddings` | `my-docs-site/wrangle-docs/create/_sources/embeddings.md` | -| `create.guid` | `https://wrangles.io/en/python/recipes/wrangles/create#guid--uuid` | `my-docs-site/wrangle-docs/create/_sources/guid.md` | -| `create.hash` | `https://wrangles.io/en/python/recipes/wrangles/create#hash` | `my-docs-site/wrangle-docs/create/_sources/hash.md` | -| `create.index` | `https://wrangles.io/en/python/recipes/wrangles/create#index` | `my-docs-site/wrangle-docs/create/_sources/index.md` | -| `create.jinja` | `https://wrangles.io/en/python/recipes/wrangles/create#jinja` | `my-docs-site/wrangle-docs/create/_sources/jinja.md` | -| `create.uuid` | `https://wrangles.io/en/python/recipes/wrangles/create#guid--uuid` | `my-docs-site/wrangle-docs/create/_sources/uuid.md` | -| `date_calculator` | `https://wrangles.io/en/python/recipes/wrangles/standalone#date-calculator` | `my-docs-site/wrangle-docs/date/_sources/date-calculator.md` | -| `extract.address` | `https://wrangles.io/en/python/recipes/wrangles/extract#address` | `my-docs-site/wrangle-docs/extract/_sources/address.md` | -| `extract.ai` | `https://wrangles.io/en/python/recipes/wrangles/extract#ai` | `my-docs-site/wrangle-docs/extract/_sources/ai.md` | -| `extract.attributes` | `https://wrangles.io/en/python/recipes/wrangles/extract#attributes` | `my-docs-site/wrangle-docs/extract/_sources/attributes.md` | -| `extract.brackets` | `https://wrangles.io/en/python/recipes/wrangles/extract#brackets` | `my-docs-site/wrangle-docs/extract/_sources/brackets.md` | -| `extract.codes` | `https://wrangles.io/en/python/recipes/wrangles/extract#codes` | `my-docs-site/wrangle-docs/extract/_sources/codes.md` | -| `extract.custom` | `https://wrangles.io/en/python/recipes/wrangles/extract#custom` | `my-docs-site/wrangle-docs/extract/_sources/custom.md` | -| `extract.date_properties` | `https://wrangles.io/en/python/recipes/wrangles/extract#date-properties` | `my-docs-site/wrangle-docs/extract/_sources/date-properties.md` | -| `extract.date_range` | `https://wrangles.io/en/python/recipes/wrangles/extract#date-range` | `my-docs-site/wrangle-docs/extract/_sources/date-range.md` | -| `extract.html` | `https://wrangles.io/en/python/recipes/wrangles/extract#html` | `my-docs-site/wrangle-docs/extract/_sources/html.md` | -| `extract.properties` | `https://wrangles.io/en/python/recipes/wrangles/extract#properties` | `my-docs-site/wrangle-docs/extract/_sources/properties.md` | -| `extract.regex` | `https://wrangles.io/en/python/recipes/wrangles/extract#regex` | `my-docs-site/wrangle-docs/extract/_sources/regex.md` | -| `clean_whitespaces` | `https://wrangles.io/en/python/recipes/wrangles/standalone#clean-whitespaces` | `my-docs-site/wrangle-docs/format/_sources/clean-whitespaces.md` | -| `format.dates` | `https://wrangles.io/en/python/recipes/wrangles/format#dates` | `my-docs-site/wrangle-docs/format/_sources/dates.md` | -| `format.pad` | `https://wrangles.io/en/python/recipes/wrangles/format#pad` | `my-docs-site/wrangle-docs/format/_sources/pad.md` | -| `format.prefix` | `https://wrangles.io/en/python/recipes/wrangles/format#prefix` | `my-docs-site/wrangle-docs/format/_sources/prefix.md` | -| `remove_words` | `https://wrangles.io/en/python/recipes/wrangles/standalone#remove-words` | `my-docs-site/wrangle-docs/format/_sources/remove-words.md` | -| `format.remove_duplicates` | `https://wrangles.io/en/python/recipes/wrangles/format#remove-duplicates` | `my-docs-site/wrangle-docs/format/_sources/remove-duplicates.md` | -| `replace` | `https://wrangles.io/en/python/recipes/wrangles/standalone#replace` | `my-docs-site/wrangle-docs/format/_sources/replace.md` | -| `round` | `https://wrangles.io/en/python/recipes/wrangles/standalone#round` | `my-docs-site/wrangle-docs/format/_sources/round.md` | -| `format.significant_figures` | `https://wrangles.io/en/python/recipes/wrangles/format#significant-figures` | `my-docs-site/wrangle-docs/format/_sources/significant-figures.md` | -| `standardize` | `https://wrangles.io/en/python/recipes/wrangles/standalone#standardize` | `my-docs-site/wrangle-docs/format/_sources/standardize.md` | -| `format.suffix` | `https://wrangles.io/en/python/recipes/wrangles/format#suffix` | `my-docs-site/wrangle-docs/format/_sources/suffix.md` | -| `translate` | `https://wrangles.io/en/python/recipes/wrangles/standalone#translate` | `my-docs-site/wrangle-docs/format/_sources/translate.md` | -| `format.trim` | `https://wrangles.io/en/python/recipes/wrangles/format#trim` | `my-docs-site/wrangle-docs/format/_sources/trim.md` | -| `lookup` | `https://wrangles.io/en/python/recipes/wrangles/standalone#lookup` | `my-docs-site/wrangle-docs/lookup/_sources/lookup.md` | -| `merge.coalesce` | `https://wrangles.io/en/python/recipes/wrangles/merge#coalesce` | `my-docs-site/wrangle-docs/merge/_sources/coalesce.md` | -| `merge.concatenate` | `https://wrangles.io/en/python/recipes/wrangles/merge#concatenate` | `my-docs-site/wrangle-docs/merge/_sources/concatenate.md` | -| `merge.dictionaries` | `https://wrangles.io/en/python/recipes/wrangles/merge#dictionaries` | `my-docs-site/wrangle-docs/merge/_sources/dictionaries.md` | -| `merge.key_value_pairs` | `https://wrangles.io/en/python/recipes/wrangles/merge#key-value-pairs` | `my-docs-site/wrangle-docs/merge/_sources/key-value-pairs.md` | -| `merge.lists` | `https://wrangles.io/en/python/recipes/wrangles/merge#lists` | `my-docs-site/wrangle-docs/merge/_sources/lists.md` | -| `merge.to_dict` | `https://wrangles.io/en/python/recipes/wrangles/merge#to-dict` | `my-docs-site/wrangle-docs/merge/_sources/to-dict.md` | -| `merge.to_list` | `https://wrangles.io/en/python/recipes/wrangles/merge#to-list` | `my-docs-site/wrangle-docs/merge/_sources/to-list.md` | -| `search.find_links` | `TODO` | `my-docs-site/wrangle-docs/search/_sources/find-links.md` | -| `search.retrieve_link_content` | `TODO` | `my-docs-site/wrangle-docs/search/_sources/retrieve-link-content.md` | -| `select.columns` | `https://wrangles.io/en/python/recipes/wrangles/select#columns` | `my-docs-site/wrangle-docs/select/_sources/columns.md` | -| `select.dictionary_element` | `https://wrangles.io/en/python/recipes/wrangles/select#dictionary-element` | `my-docs-site/wrangle-docs/select/_sources/dictionary-element.md` | -| `drop` | `https://wrangles.io/en/python/recipes/wrangles/utilities#drop` | `my-docs-site/wrangle-docs/select/_sources/drop.md` | -| `select.element` | `https://wrangles.io/en/python/recipes/wrangles/select#element` | `my-docs-site/wrangle-docs/select/_sources/element.md` | -| `filter` | `https://wrangles.io/en/python/recipes/wrangles/utilities#filter` | `my-docs-site/wrangle-docs/select/_sources/filter.md` | -| `select.group_by` | `https://wrangles.io/en/python/recipes/wrangles/select#group-by` | `my-docs-site/wrangle-docs/select/_sources/group-by.md` | -| `select.head` | `https://wrangles.io/en/python/recipes/wrangles/select#head` | `my-docs-site/wrangle-docs/select/_sources/head.md` | -| `select.highest_confidence` | `https://wrangles.io/en/python/recipes/wrangles/select#highest-confidence` | `my-docs-site/wrangle-docs/select/_sources/highest-confidence.md` | -| `select.left` | `https://wrangles.io/en/python/recipes/wrangles/select#left` | `my-docs-site/wrangle-docs/select/_sources/left.md` | -| `select.length` | `https://wrangles.io/en/python/recipes/wrangles/select#length` | `my-docs-site/wrangle-docs/select/_sources/length.md` | -| `select.list_element` | `https://wrangles.io/en/python/recipes/wrangles/select#list-element` | `my-docs-site/wrangle-docs/select/_sources/list-element.md` | -| `select.right` | `https://wrangles.io/en/python/recipes/wrangles/select#right` | `my-docs-site/wrangle-docs/select/_sources/right.md` | -| `select.sample` | `https://wrangles.io/en/python/recipes/wrangles/select#sample` | `my-docs-site/wrangle-docs/select/_sources/sample.md` | -| `sort` | `https://wrangles.io/en/python/recipes/wrangles/utilities#sort` | `my-docs-site/wrangle-docs/select/_sources/sort.md` | -| `select.substring` | `https://wrangles.io/en/python/recipes/wrangles/select#substring` | `my-docs-site/wrangle-docs/select/_sources/substring.md` | -| `select.tail` | `https://wrangles.io/en/python/recipes/wrangles/select#tail` | `my-docs-site/wrangle-docs/select/_sources/tail.md` | -| `select.threshold` | `https://wrangles.io/en/python/recipes/wrangles/select#threshold` | `my-docs-site/wrangle-docs/select/_sources/threshold.md` | -| `split.dictionary` | `https://wrangles.io/en/python/recipes/wrangles/split#dictionary` | `my-docs-site/wrangle-docs/split/_sources/dictionary.md` | -| `explode` | `https://wrangles.io/en/python/recipes/wrangles/utilities#explode` | `my-docs-site/wrangle-docs/split/_sources/explode.md` | -| `split.list` | `https://wrangles.io/en/python/recipes/wrangles/split#list` | `my-docs-site/wrangle-docs/split/_sources/list.md` | -| `split.text` | `https://wrangles.io/en/python/recipes/wrangles/split#text` | `my-docs-site/wrangle-docs/split/_sources/text.md` | -| `split.tokenize` | `https://wrangles.io/en/python/recipes/wrangles/split#tokenize` | `my-docs-site/wrangle-docs/split/_sources/tokenize.md` | -| `copy` | `https://wrangles.io/en/python/recipes/wrangles/utilities#copy` | `my-docs-site/wrangle-docs/transform/_sources/copy.md` | -| `reindex` | `https://wrangles.io/en/python/recipes/wrangles/utilities#reindex` | `my-docs-site/wrangle-docs/transform/_sources/reindex.md` | -| `rename` | `https://wrangles.io/en/python/recipes/wrangles/utilities#rename` | `my-docs-site/wrangle-docs/transform/_sources/rename.md` | -| `transpose` | `https://wrangles.io/en/python/recipes/wrangles/utilities#transpose` | `my-docs-site/wrangle-docs/transform/_sources/transpose.md` | -| `log` | `https://wrangles.io/en/python/recipes/wrangles/utilities#log` | `my-docs-site/wrangle-docs/utility/_sources/log.md` | +| `classify` | `https://wrangles.io/en/python/recipes/wrangles/standalone#classify` | `wrangles-docs/wrangle-docs/ai/_sources/classify.md` | +| `generate.ai` | `TODO` | `wrangles-docs/wrangle-docs/ai/_sources/ai.md` | +| `huggingface` | `TODO` | `wrangles-docs/wrangle-docs/ai/_sources/huggingface.md` | +| `compare.lists` | `https://wrangles.io/en/python/recipes/wrangles/compare#lists` | `wrangles-docs/wrangle-docs/compare/_sources/lists.md` | +| `compare.text` | `https://wrangles.io/en/python/recipes/wrangles/compare#text` | `wrangles-docs/wrangle-docs/compare/_sources/text.md` | +| `similarity` | `https://wrangles.io/en/python/recipes/wrangles/standalone#similarity` | `wrangles-docs/wrangle-docs/compare/_sources/similarity.md` | +| `compute.case_when` | `https://wrangles.io/en/python/recipes/wrangles/compute#case-when` | `wrangles-docs/wrangle-docs/compute/_sources/case-when.md` | +| `math` | `https://wrangles.io/en/python/recipes/wrangles/standalone#math` | `wrangles-docs/wrangle-docs/compute/_sources/math.md` | +| `python` | `https://wrangles.io/en/python/recipes/wrangles/standalone#python` | `wrangles-docs/wrangle-docs/compute/_sources/python.md` | +| `compute.score_search_results` | `TODO` | `wrangles-docs/wrangle-docs/compute/_sources/score-search-results.md` | +| `sql` | `https://wrangles.io/en/python/recipes/wrangles/standalone#sql` | `wrangles-docs/wrangle-docs/compute/_sources/sql.md` | +| `convert.case` | `https://wrangles.io/en/python/recipes/wrangles/convert#case` | `wrangles-docs/wrangle-docs/convert/_sources/case.md` | +| `convert.data_type` | `https://wrangles.io/en/python/recipes/wrangles/convert#data-type` | `wrangles-docs/wrangle-docs/convert/_sources/data-type.md` | +| `convert.fraction_to_decimal` | `https://wrangles.io/en/python/recipes/wrangles/convert#fraction-to-decimal` | `wrangles-docs/wrangle-docs/convert/_sources/fraction-to-decimal.md` | +| `convert.from_json` | `https://wrangles.io/en/python/recipes/wrangles/convert#from-json` | `wrangles-docs/wrangle-docs/convert/_sources/from-json.md` | +| `convert.from_yaml` | `https://wrangles.io/en/python/recipes/wrangles/convert#from-yaml` | `wrangles-docs/wrangle-docs/convert/_sources/from-yaml.md` | +| `convert.to_json` | `https://wrangles.io/en/python/recipes/wrangles/convert#to-json` | `wrangles-docs/wrangle-docs/convert/_sources/to-json.md` | +| `convert.to_yaml` | `https://wrangles.io/en/python/recipes/wrangles/convert#to-yaml` | `wrangles-docs/wrangle-docs/convert/_sources/to-yaml.md` | +| `create.bins` | `https://wrangles.io/en/python/recipes/wrangles/create#bins` | `wrangles-docs/wrangle-docs/create/_sources/bins.md` | +| `create.column` | `https://wrangles.io/en/python/recipes/wrangles/create#column` | `wrangles-docs/wrangle-docs/create/_sources/column.md` | +| `create.embeddings` | `https://wrangles.io/en/python/recipes/wrangles/create#embeddings` | `wrangles-docs/wrangle-docs/create/_sources/embeddings.md` | +| `create.guid` | `https://wrangles.io/en/python/recipes/wrangles/create#guid--uuid` | `wrangles-docs/wrangle-docs/create/_sources/guid.md` | +| `create.hash` | `https://wrangles.io/en/python/recipes/wrangles/create#hash` | `wrangles-docs/wrangle-docs/create/_sources/hash.md` | +| `create.index` | `https://wrangles.io/en/python/recipes/wrangles/create#index` | `wrangles-docs/wrangle-docs/create/_sources/index.md` | +| `create.jinja` | `https://wrangles.io/en/python/recipes/wrangles/create#jinja` | `wrangles-docs/wrangle-docs/create/_sources/jinja.md` | +| `create.uuid` | `https://wrangles.io/en/python/recipes/wrangles/create#guid--uuid` | `wrangles-docs/wrangle-docs/create/_sources/uuid.md` | +| `date_calculator` | `https://wrangles.io/en/python/recipes/wrangles/standalone#date-calculator` | `wrangles-docs/wrangle-docs/date/_sources/date-calculator.md` | +| `extract.address` | `https://wrangles.io/en/python/recipes/wrangles/extract#address` | `wrangles-docs/wrangle-docs/extract/_sources/address.md` | +| `extract.ai` | `https://wrangles.io/en/python/recipes/wrangles/extract#ai` | `wrangles-docs/wrangle-docs/extract/_sources/ai.md` | +| `extract.attributes` | `https://wrangles.io/en/python/recipes/wrangles/extract#attributes` | `wrangles-docs/wrangle-docs/extract/_sources/attributes.md` | +| `extract.brackets` | `https://wrangles.io/en/python/recipes/wrangles/extract#brackets` | `wrangles-docs/wrangle-docs/extract/_sources/brackets.md` | +| `extract.codes` | `https://wrangles.io/en/python/recipes/wrangles/extract#codes` | `wrangles-docs/wrangle-docs/extract/_sources/codes.md` | +| `extract.custom` | `https://wrangles.io/en/python/recipes/wrangles/extract#custom` | `wrangles-docs/wrangle-docs/extract/_sources/custom.md` | +| `extract.date_properties` | `https://wrangles.io/en/python/recipes/wrangles/extract#date-properties` | `wrangles-docs/wrangle-docs/extract/_sources/date-properties.md` | +| `extract.date_range` | `https://wrangles.io/en/python/recipes/wrangles/extract#date-range` | `wrangles-docs/wrangle-docs/extract/_sources/date-range.md` | +| `extract.html` | `https://wrangles.io/en/python/recipes/wrangles/extract#html` | `wrangles-docs/wrangle-docs/extract/_sources/html.md` | +| `extract.properties` | `https://wrangles.io/en/python/recipes/wrangles/extract#properties` | `wrangles-docs/wrangle-docs/extract/_sources/properties.md` | +| `extract.regex` | `https://wrangles.io/en/python/recipes/wrangles/extract#regex` | `wrangles-docs/wrangle-docs/extract/_sources/regex.md` | +| `clean_whitespaces` | `https://wrangles.io/en/python/recipes/wrangles/standalone#clean-whitespaces` | `wrangles-docs/wrangle-docs/format/_sources/clean-whitespaces.md` | +| `format.dates` | `https://wrangles.io/en/python/recipes/wrangles/format#dates` | `wrangles-docs/wrangle-docs/format/_sources/dates.md` | +| `format.pad` | `https://wrangles.io/en/python/recipes/wrangles/format#pad` | `wrangles-docs/wrangle-docs/format/_sources/pad.md` | +| `format.prefix` | `https://wrangles.io/en/python/recipes/wrangles/format#prefix` | `wrangles-docs/wrangle-docs/format/_sources/prefix.md` | +| `remove_words` | `https://wrangles.io/en/python/recipes/wrangles/standalone#remove-words` | `wrangles-docs/wrangle-docs/format/_sources/remove-words.md` | +| `format.remove_duplicates` | `https://wrangles.io/en/python/recipes/wrangles/format#remove-duplicates` | `wrangles-docs/wrangle-docs/format/_sources/remove-duplicates.md` | +| `replace` | `https://wrangles.io/en/python/recipes/wrangles/standalone#replace` | `wrangles-docs/wrangle-docs/format/_sources/replace.md` | +| `round` | `https://wrangles.io/en/python/recipes/wrangles/standalone#round` | `wrangles-docs/wrangle-docs/format/_sources/round.md` | +| `format.significant_figures` | `https://wrangles.io/en/python/recipes/wrangles/format#significant-figures` | `wrangles-docs/wrangle-docs/format/_sources/significant-figures.md` | +| `standardize` | `https://wrangles.io/en/python/recipes/wrangles/standalone#standardize` | `wrangles-docs/wrangle-docs/format/_sources/standardize.md` | +| `format.suffix` | `https://wrangles.io/en/python/recipes/wrangles/format#suffix` | `wrangles-docs/wrangle-docs/format/_sources/suffix.md` | +| `translate` | `https://wrangles.io/en/python/recipes/wrangles/standalone#translate` | `wrangles-docs/wrangle-docs/format/_sources/translate.md` | +| `format.trim` | `https://wrangles.io/en/python/recipes/wrangles/format#trim` | `wrangles-docs/wrangle-docs/format/_sources/trim.md` | +| `lookup` | `https://wrangles.io/en/python/recipes/wrangles/standalone#lookup` | `wrangles-docs/wrangle-docs/lookup/_sources/lookup.md` | +| `merge.coalesce` | `https://wrangles.io/en/python/recipes/wrangles/merge#coalesce` | `wrangles-docs/wrangle-docs/merge/_sources/coalesce.md` | +| `merge.concatenate` | `https://wrangles.io/en/python/recipes/wrangles/merge#concatenate` | `wrangles-docs/wrangle-docs/merge/_sources/concatenate.md` | +| `merge.dictionaries` | `https://wrangles.io/en/python/recipes/wrangles/merge#dictionaries` | `wrangles-docs/wrangle-docs/merge/_sources/dictionaries.md` | +| `merge.key_value_pairs` | `https://wrangles.io/en/python/recipes/wrangles/merge#key-value-pairs` | `wrangles-docs/wrangle-docs/merge/_sources/key-value-pairs.md` | +| `merge.lists` | `https://wrangles.io/en/python/recipes/wrangles/merge#lists` | `wrangles-docs/wrangle-docs/merge/_sources/lists.md` | +| `merge.to_dict` | `https://wrangles.io/en/python/recipes/wrangles/merge#to-dict` | `wrangles-docs/wrangle-docs/merge/_sources/to-dict.md` | +| `merge.to_list` | `https://wrangles.io/en/python/recipes/wrangles/merge#to-list` | `wrangles-docs/wrangle-docs/merge/_sources/to-list.md` | +| `search.find_links` | `TODO` | `wrangles-docs/wrangle-docs/search/_sources/find-links.md` | +| `search.retrieve_link_content` | `TODO` | `wrangles-docs/wrangle-docs/search/_sources/retrieve-link-content.md` | +| `select.columns` | `https://wrangles.io/en/python/recipes/wrangles/select#columns` | `wrangles-docs/wrangle-docs/select/_sources/columns.md` | +| `select.dictionary_element` | `https://wrangles.io/en/python/recipes/wrangles/select#dictionary-element` | `wrangles-docs/wrangle-docs/select/_sources/dictionary-element.md` | +| `drop` | `https://wrangles.io/en/python/recipes/wrangles/utilities#drop` | `wrangles-docs/wrangle-docs/select/_sources/drop.md` | +| `select.element` | `https://wrangles.io/en/python/recipes/wrangles/select#element` | `wrangles-docs/wrangle-docs/select/_sources/element.md` | +| `filter` | `https://wrangles.io/en/python/recipes/wrangles/utilities#filter` | `wrangles-docs/wrangle-docs/select/_sources/filter.md` | +| `select.group_by` | `https://wrangles.io/en/python/recipes/wrangles/select#group-by` | `wrangles-docs/wrangle-docs/select/_sources/group-by.md` | +| `select.head` | `https://wrangles.io/en/python/recipes/wrangles/select#head` | `wrangles-docs/wrangle-docs/select/_sources/head.md` | +| `select.highest_confidence` | `https://wrangles.io/en/python/recipes/wrangles/select#highest-confidence` | `wrangles-docs/wrangle-docs/select/_sources/highest-confidence.md` | +| `select.left` | `https://wrangles.io/en/python/recipes/wrangles/select#left` | `wrangles-docs/wrangle-docs/select/_sources/left.md` | +| `select.length` | `https://wrangles.io/en/python/recipes/wrangles/select#length` | `wrangles-docs/wrangle-docs/select/_sources/length.md` | +| `select.list_element` | `https://wrangles.io/en/python/recipes/wrangles/select#list-element` | `wrangles-docs/wrangle-docs/select/_sources/list-element.md` | +| `select.right` | `https://wrangles.io/en/python/recipes/wrangles/select#right` | `wrangles-docs/wrangle-docs/select/_sources/right.md` | +| `select.sample` | `https://wrangles.io/en/python/recipes/wrangles/select#sample` | `wrangles-docs/wrangle-docs/select/_sources/sample.md` | +| `sort` | `https://wrangles.io/en/python/recipes/wrangles/utilities#sort` | `wrangles-docs/wrangle-docs/select/_sources/sort.md` | +| `select.substring` | `https://wrangles.io/en/python/recipes/wrangles/select#substring` | `wrangles-docs/wrangle-docs/select/_sources/substring.md` | +| `select.tail` | `https://wrangles.io/en/python/recipes/wrangles/select#tail` | `wrangles-docs/wrangle-docs/select/_sources/tail.md` | +| `select.threshold` | `https://wrangles.io/en/python/recipes/wrangles/select#threshold` | `wrangles-docs/wrangle-docs/select/_sources/threshold.md` | +| `split.dictionary` | `https://wrangles.io/en/python/recipes/wrangles/split#dictionary` | `wrangles-docs/wrangle-docs/split/_sources/dictionary.md` | +| `explode` | `https://wrangles.io/en/python/recipes/wrangles/utilities#explode` | `wrangles-docs/wrangle-docs/split/_sources/explode.md` | +| `split.list` | `https://wrangles.io/en/python/recipes/wrangles/split#list` | `wrangles-docs/wrangle-docs/split/_sources/list.md` | +| `split.text` | `https://wrangles.io/en/python/recipes/wrangles/split#text` | `wrangles-docs/wrangle-docs/split/_sources/text.md` | +| `split.tokenize` | `https://wrangles.io/en/python/recipes/wrangles/split#tokenize` | `wrangles-docs/wrangle-docs/split/_sources/tokenize.md` | +| `copy` | `https://wrangles.io/en/python/recipes/wrangles/utilities#copy` | `wrangles-docs/wrangle-docs/transform/_sources/copy.md` | +| `reindex` | `https://wrangles.io/en/python/recipes/wrangles/utilities#reindex` | `wrangles-docs/wrangle-docs/transform/_sources/reindex.md` | +| `rename` | `https://wrangles.io/en/python/recipes/wrangles/utilities#rename` | `wrangles-docs/wrangle-docs/transform/_sources/rename.md` | +| `transpose` | `https://wrangles.io/en/python/recipes/wrangles/utilities#transpose` | `wrangles-docs/wrangle-docs/transform/_sources/transpose.md` | +| `log` | `https://wrangles.io/en/python/recipes/wrangles/utilities#log` | `wrangles-docs/wrangle-docs/utility/_sources/log.md` | diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 5981425..d4556ef 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -26,7 +26,7 @@ jobs: with: node-version: 22.x cache: 'npm' - cache-dependency-path: my-docs-site/package-lock.json + cache-dependency-path: wrangles-docs/package-lock.json - name: Lowercase Image Name run: | @@ -34,11 +34,15 @@ jobs: echo "IMAGE_NAME=${IMAGE_NAME,,}" >>${GITHUB_ENV} - name: Install Dependencies - working-directory: ./my-docs-site + working-directory: ./wrangles-docs run: npm install + - name: Validate Registry Artifacts + working-directory: ./wrangles-docs + run: npm run check:registry + - name: Build the App - working-directory: ./my-docs-site + working-directory: ./wrangles-docs run: npm run build - name: Log into registry @@ -57,8 +61,8 @@ jobs: - name: Build and Push Docker Image uses: docker/build-push-action@v3 with: - context: ./my-docs-site - file: ./my-docs-site/Dockerfile + context: ./wrangles-docs + file: ./wrangles-docs/Dockerfile push: true tags: ${{ env.REGISTRY }}/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/registry.yml b/.github/workflows/registry.yml new file mode 100644 index 0000000..93ef158 --- /dev/null +++ b/.github/workflows/registry.yml @@ -0,0 +1,58 @@ +name: Validate Registry + +on: + pull_request: + paths: + - 'registry/**' + - 'wrangles-docs/registry-docs/**' + - 'wrangles-docs/static/registry/**' + - 'wrangles-docs/static/schemas/recipes/**' + - 'wrangles-docs/scripts/compile-registry.cjs' + - 'wrangles-docs/docusaurus.config.js' + - 'wrangles-docs/sidebarsRegistry.js' + - 'wrangles-docs/package.json' + - 'wrangles-docs/package-lock.json' + - '.github/workflows/registry.yml' + push: + branches: + - main + paths: + - 'registry/**' + - 'wrangles-docs/registry-docs/**' + - 'wrangles-docs/static/registry/**' + - 'wrangles-docs/static/schemas/recipes/**' + - 'wrangles-docs/scripts/compile-registry.cjs' + - 'wrangles-docs/docusaurus.config.js' + - 'wrangles-docs/sidebarsRegistry.js' + - 'wrangles-docs/package.json' + - 'wrangles-docs/package-lock.json' + - '.github/workflows/registry.yml' + +jobs: + registry: + runs-on: ubuntu-latest + permissions: + contents: read + + steps: + - name: Checkout repository + uses: actions/checkout@v5 + + - name: Use Node.js 22 + uses: actions/setup-node@v6 + with: + node-version: 22.x + cache: npm + cache-dependency-path: wrangles-docs/package-lock.json + + - name: Install dependencies + working-directory: wrangles-docs + run: npm ci + + - name: Validate Registry artifacts + working-directory: wrangles-docs + run: npm run check:registry + + - name: Build documentation site + working-directory: wrangles-docs + run: npm run build diff --git a/.gitignore b/.gitignore index fe21abf..7ed83a6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ node_modules/ -/my-docs-site/node_modules/ +/wrangles-docs/node_modules/ npm-debug.log* yarn-debug.log* yarn-error.log* @@ -9,10 +9,10 @@ yarn.lock pnpm-lock.yaml .DS_Store .env# Node / Docusaurus -my-docs-site/node_modules/ -my-docs-site/.docusaurus/ -my-docs-site/build/ -my-docs-site/.cache/ +wrangles-docs/node_modules/ +wrangles-docs/.docusaurus/ +wrangles-docs/build/ +wrangles-docs/.cache/ # Logs npm-debug.log* @@ -38,4 +38,3 @@ yarn-error.log package-lock.json yarn.lock .pnpm-debug.log - diff --git a/WRANGLESIO_CONTENT_TABLE_DOCUMENTATION.md b/WRANGLESIO_CONTENT_TABLE_DOCUMENTATION.md index f7c4351..996a95d 100644 --- a/WRANGLESIO_CONTENT_TABLE_DOCUMENTATION.md +++ b/WRANGLESIO_CONTENT_TABLE_DOCUMENTATION.md @@ -13,10 +13,10 @@ It is separate from the older mixed `models` table. The old table contains DIY w Current seed source: ```text -my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js -my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json -my-docs-site/docs/python/recipes/wrangles/*.md -my-docs-site/docs/excel/*.md +wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js +wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json +wrangles-docs/docs/python/recipes/wrangles/*.md +wrangles-docs/docs/excel/*.md ``` ## Naming Model @@ -406,8 +406,8 @@ Current shape: { "docs": ["docs/python/recipes/wrangles/convert.md"], "color": "sun", - "source_catalog": "my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js", - "source_mapping": "my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json" + "source_catalog": "wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js", + "source_mapping": "wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json" } ``` diff --git a/frontmatter.json b/frontmatter.json index 9627b9b..5a6d223 100644 --- a/frontmatter.json +++ b/frontmatter.json @@ -51,53 +51,53 @@ "frontMatter.preview.host": "http://localhost:3000", "frontMatter.content.pageFolders": [ { - "path": "[[workspace]]/my-docs-site/docs", + "path": "[[workspace]]/wrangles-docs/docs", "title": "docs" }, { - "path": "[[workspace]]/my-docs-site/docs/waas" + "path": "[[workspace]]/wrangles-docs/docs/waas" }, { - "path": "[[workspace]]/my-docs-site/docs/tutorials" + "path": "[[workspace]]/wrangles-docs/docs/tutorials" }, { - "path": "[[workspace]]/my-docs-site/docs/python" + "path": "[[workspace]]/wrangles-docs/docs/python" }, { - "path": "[[workspace]]/my-docs-site/docs/excel" + "path": "[[workspace]]/wrangles-docs/docs/excel" }, { - "path": "[[workspace]]/my-docs-site/docs/account" + "path": "[[workspace]]/wrangles-docs/docs/account" }, { - "path": "[[workspace]]/my-docs-site/docs/ADI" + "path": "[[workspace]]/wrangles-docs/docs/ADI" }, { - "path": "[[workspace]]/my-docs-site/docs/python/connectors" + "path": "[[workspace]]/wrangles-docs/docs/python/connectors" }, { - "path": "[[workspace]]/my-docs-site/docs/python/recipes" + "path": "[[workspace]]/wrangles-docs/docs/python/recipes" }, { - "path": "[[workspace]]/my-docs-site/docs/excel/my_wrangles" + "path": "[[workspace]]/wrangles-docs/docs/excel/my_wrangles" }, { - "path": "[[workspace]]/my-docs-site/docs/excel/in-depth-examples" + "path": "[[workspace]]/wrangles-docs/docs/excel/in-depth-examples" }, { - "path": "[[workspace]]/my-docs-site/docs/excel/Let's-Get-Ready-To-Wrangle" + "path": "[[workspace]]/wrangles-docs/docs/excel/Let's-Get-Ready-To-Wrangle" }, { - "path": "[[workspace]]/my-docs-site/docs/python/recipes/wrangles" + "path": "[[workspace]]/wrangles-docs/docs/python/recipes/wrangles" }, { - "path": "[[workspace]]/my-docs-site/docs/python/recipes/custom-functions" + "path": "[[workspace]]/wrangles-docs/docs/python/recipes/custom-functions" }, { - "path": "[[workspace]]/my-docs-site/docs/python/connectors/notification" + "path": "[[workspace]]/wrangles-docs/docs/python/connectors/notification" }, { - "path": "[[workspace]]/my-docs-site/docs/excel/in-depth-examples/example-1" + "path": "[[workspace]]/wrangles-docs/docs/excel/in-depth-examples/example-1" } ], "frontMatter.git.enabled": true diff --git a/migrate.py b/migrate.py index 19a3d6a..262344e 100644 --- a/migrate.py +++ b/migrate.py @@ -19,8 +19,8 @@ CURRENT_DIR = pathlib.Path(os.getcwd()) # Dump into the Docusaurus site structure. -OUT_DIR = CURRENT_DIR / "my-docs-site" / "docs" -STATIC_DIR = CURRENT_DIR / "my-docs-site" / "static" +OUT_DIR = CURRENT_DIR / "wrangles-docs" / "docs" +STATIC_DIR = CURRENT_DIR / "wrangles-docs" / "static" RATE_LIMIT_DELAY = 0.2 HEAD = {"Authorization": f"Bearer {API_TOKEN}"} diff --git a/registry/CONTRACT.md b/registry/CONTRACT.md new file mode 100644 index 0000000..94476f6 --- /dev/null +++ b/registry/CONTRACT.md @@ -0,0 +1,293 @@ +# Wrangles Registry Contract + +Status: pilot + +Contract version: 0.1 + +## Purpose + +The Registry is the shared, versioned knowledge contract for Wrangles. It is +designed to be readable by people, consumable by agents, renderable by the +documentation site, and compilable into machine-facing artifacts without a +database or live website dependency. + +The format is aligned with the Open Knowledge Format pattern: small Markdown +concept files, YAML frontmatter, stable identifiers, provenance, and explicit +lifecycle information. Wrangles-specific fields are defined by +`schema/wrangle-entry.schema.json`. + +## Authority boundaries + +Each fact has one authoring authority: + +| Information | Authoring authority | +| ------------------------------------------------------- | ----------------------------------- | +| Canonical wrangle UUID | Wrangles catalog database | +| Accepted runtime parameter names | WranglesPY function signature | +| Runtime required/optional status and defaults | WranglesPY function signature | +| Runtime behavior | WranglesPY implementation and tests | +| Purpose, guidance, parameter meaning, and relationships | Registry Markdown | +| Curated examples and expected outcomes | Registry Markdown and fixtures | +| Lifecycle, visibility, access, and provenance | Registry Markdown | +| Recipe JSON Schema | Generated output | +| Docusaurus pages | Generated output | +| Database/search records | Generated projection | + +The compiled Registry Markdown is the complete consumption source for people +and agents. Runtime-owned facts are supplied by the pinned WranglesPY contract +manifest at `runtime/wranglespy.json` and reconciled with the Markdown by the +compiler. The manifest is a versioned input, not another authoring source. + +The existing per-wrangle Markdown under +`wrangles-docs/wrangle-docs/**/_sources/*.md` is the migration quasi-registry. +Every file is inventoried, content-hashed, and compared with the runtime +manifest and any normalized Registry entry. Aggregate category pages, the +index, and the template are inventoried separately as supporting Markdown; +they are not treated as one-to-one wrangle records. + +For the first migration pass, conflicting or incomplete source content is +resolved in this order: + +1. WranglesPY callable signature, implementation, and tests +2. the callable's embedded Python schema docstring +3. the matching `_sources/*.md` quasi-registry record + +Code determines executable names, accepted explicit parameters, required +status, defaults, and behavior. The embedded schema supplies public +`**kwargs`, constraints, and prose that code does not express mechanically. +The quasi-registry then contributes UUIDs, examples, access metadata, tags, +and additional guidance. The reconciliation report retains disagreements as +migration evidence without asking reviewers to adjudicate them one by one. + +The database allocates `id` using the same UUID mechanism as custom wrangles. +The assigned UUID is then recorded in the Registry and reused everywhere; the +Registry compiler must never generate a second identity. Existing records must +be resolved by their current database ID before a new ID is allocated. During +this first pass, `id: null` explicitly means that database reconciliation is +still pending; it is not a generated or temporary identity. + +## Parameter contract + +The callable recipe surface is the authority boundary. WranglesPY must emit a +versioned runtime manifest by enumerating `wrangles.recipe._recipe_wrangles` +directly. That manifest supplies the mechanical runtime facts: callable recipe +keys, Python symbols, signature parameters, required/optional status, defaults, +and common-control capabilities. During migration it also exports the current +embedded Python schema docstring so CI can prove that no existing coverage was +lost. + +This rule applies whether a recipe wrangle delegates to a lower-level Wrangles +function, implements the behavior directly, composes other wrangles, or calls a +service. A lower-level function is an implementation detail and is never +required for Registry inclusion. Its signature and tests may be used for parity +checks, but the Registry pipeline must not depend on finding one. + +Registry Markdown keeps the full parameter records, including descriptions, +roles, accepted-value constraints that cannot be inferred reliably from Python +annotations, and examples. The compiler merges those records with the runtime +manifest, rejects name/required/default drift, and generates the recipe JSON +Schema from the merged result. + +The current embedded JSON Schema docstrings in `recipe_wrangles` are migration +input, not a second permanent authoring source. Their complete overview and +parameter coverage must first be migrated into Registry records and verified +by parity tests. They can then be generated as a compatibility view from the +compiled contract, or removed once no supported consumer reads them directly. + +The runtime-owned parts of `parameters` are checked automatically against the +manifest. Entries that agree are marked `verified`. The compiled Markdown and +per-entry JSON remain the comprehensive consumption artifacts. + +## Source layout + +```text +registry/ + index.md + CONTRACT.md + schema/ + wrangle-entry.schema.json + common/ + wrangle-controls.yaml + runtime/ + wranglespy.json + reports/ + runtime-reconciliation.json + runtime-reconciliation.md + wrangles/ + _root/ + lookup.md + convert/ + case.md + data-type.md + fixtures/ + convert.data_type/ + integer-with-fallback.input.json + integer-with-fallback.output.json +``` + +Other namespaces repeat the same pattern. Current root-level recipe keys are +stored under `_root/` with `namespace: null`. This preserves the executable +syntax reported by WranglesPY and avoids inventing the future dotted key before +that migration is implemented. Source paths are descriptive and do not define +identity. + +## Naming conventions + +Structured field names use `snake_case`, such as `wrangle_key` and +`output_fixture`, because the same names flow through YAML, JSON, Python, and +database projections. Literal recipe keys preserve runtime syntax, such as +`convert.case` and `convert.data_type`. + +Human-facing URL and file slugs use `kebab-case`, such as `data-type` and +`uppercase-output`. + +One public recipe key maps to one Markdown file. The file path is descriptive +and may move without changing the entry's identity. + +Each entry separates identity, executable naming, compatibility, and routing: + +- `id` is the immutable database identity once assigned. It does not encode + taxonomy, syntax, or URL; it may be `null` only during migration. +- `namespace` is the executable prefix, such as `convert` in `convert.case`, + or `null` for a current root-level key. +- `wrangle_name` is the callable name within that namespace, such as `case`. +- `wrangle_key` is the canonical executable recipe key. It is composed from + `namespace` and `wrangle_name` for dotted keys and equals `wrangle_name` for + root-level keys. +- `slug` is the public documentation path below `/wrangles/`. Changing it + requires a redirect. + +`aliases` contains still-supported legacy recipe keys. The first-pass Registry +keeps `classify`, `lookup`, and other ungrouped keys exactly as the current code +exposes them. When the dotted migration is implemented, the new key can become +canonical without changing `id`, and the former key can move to `aliases` for +the documented compatibility period. + +Planned canonical naming includes: + +| `wrangle_key` | `namespace` | `wrangle_name` | +| ------------------- | ----------- | -------------- | +| `classify.custom` | `classify` | `custom` | +| `classify.bespoke` | `classify` | `bespoke` | +| `lookup.key` | `lookup` | `key` | +| `lookup.semantic` | `lookup` | `semantic` | + +The corresponding `aliases` will be populated from the actual legacy runtime +keys during migration rather than inferred from the new names. + +## Entry requirements + +Every wrangle entry must declare: + +- `schema_version` +- `type: wrangle`, the OKF concept kind +- database `id` (or explicit `null` while pending), executable `namespace` + (or `null` for a root key), specific `wrangle_name`, callable `wrangle_key`, + public `slug`, and compatibility `aliases` +- `title` and `description` +- `status` and `visibility` +- `tags` +- a runtime package and Python symbol +- access flags +- supported common-control capabilities +- parameter definitions +- at least one provenance source + +Parameter records contain human guidance plus a JSON Schema fragment. Every +runtime-owned parameter fact must reconcile with the pinned manifest and be +traceable to the named runtime symbol. + +`runtime_default` means the value used when the argument is omitted. It is not +a playground placeholder. Example or UI starter values belong in examples, +not in `runtime_default`. + +Undocumented `**kwargs` are implementation escape hatches and are not public +recipe parameters. A named property in the embedded Python schema docstring is +treated as an existing deliberate promotion and is migrated into the Registry. + +## Common controls + +The shared `if`, `where`, and `where_params` definitions live in +`common/wrangle-controls.yaml`. Entries opt into them through `capabilities`. +They must not duplicate the common definitions in each wrangle file. + +## Examples and verification + +Each example has a stable ID, recipe YAML, input fixture, output fixture, and +verification level: + +- `static`: syntax, schema, and fixture shape are checked. +- `offline`: the recipe is executed without external services and output is + compared with the output fixture. +- `live`: a separate controlled job executes an external service. +- `manual`: the example requires a documented human check. + +The pilot compiler implements `static` verification. The entries remain +`static` until an automated WranglesPY execution check is added; output +fixtures do not by themselves constitute execution evidence. + +Examples must use sanitized, minimal data. Credentials, customer data, and +private model identifiers are prohibited. + +## Generated artifacts + +The compiler produces: + +- first-class Docusaurus pages under `wrangles-docs/registry-docs/` +- an agent-readable bundle under `wrangles-docs/static/registry/` +- public copies of the Registry entry and WranglesPY runtime-manifest schemas + under `wrangles-docs/static/registry/schema/` +- `manifest.json`, containing lightweight discovery metadata and links +- one comprehensive JSON contract per wrangle under + `wrangles-docs/static/registry/contracts/`, including all parameters +- raw source Markdown and sanitized example fixtures +- a pilot recipe JSON Schema under + `wrangles-docs/static/schemas/recipes/pilot/schema.json` +- deterministic JSON and Markdown reconciliation reports under + `registry/reports/` + +Only entries with `visibility: public` may enter public artifacts. Publication +is an allowlisted compiler decision, not a consequence of repository +visibility. + +Generated artifacts are deterministic: timestamps, local paths, credentials, +and environment-specific values are excluded. A clean compile followed by +`check:registry` must produce no Git diff. + +## Versioning and lifecycle + +The pilot Registry version is `0.1.0-pilot`. A production release will contain: + +- an immutable Registry version +- the compatible WranglesPY version or version range +- the source commit +- immutable recipe-schema and Registry URLs +- a convenience `latest` alias that is not used for reproducible execution + +Wrangles progress through `draft`, `active`, `deprecated`, and `removed`. +Deprecated records stay discoverable and identify their replacement. Removed +records remain in versioned artifacts needed to understand historical recipes. + +## Change workflow + +A Registry pull request must update the authoritative source, regenerate +artifacts, and pass the Registry checks. Direct edits to generated artifacts or +the database projection are invalid. + +The current wiki and database extraction scripts are migration inputs. Once +the cutover is complete, they must not remain ongoing authoring paths. + +## Pilot exit criteria + +The pilot is complete when: + +1. All callable recipe wrangles compile into deterministic Markdown, manifest, + and recipe-schema artifacts; curated entries are preserved during bootstrap. +2. Invalid frontmatter, duplicate keys, invalid recipes, missing fixtures, and + stale generated outputs fail CI. +3. The pages build successfully in Docusaurus at stable per-wrangle routes. +4. A pinned WranglesPY contract manifest is reconciled with all existing + per-wrangle quasi-registry Markdown and the normalized pilot entries. The + report distinguishes records awaiting normalization from runtime wrangles + that genuinely lack Markdown, and preserves embedded-schema differences. +5. An offline example runner is designed for the next implementation slice. diff --git a/registry/README.md b/registry/README.md new file mode 100644 index 0000000..26097c9 --- /dev/null +++ b/registry/README.md @@ -0,0 +1,51 @@ +# Wrangles Registry + +This directory is the authoring source for the Wrangles knowledge registry. +It contains curated, reviewable Markdown records and the small supporting +schemas and fixtures needed to compile those records into product artifacts. + +Start with [CONTRACT.md](CONTRACT.md). The first-pass pilot covers all callable +recipe wrangles reported by the pinned WranglesPY runtime manifest. Three +entries (`convert.case`, `convert.data_type`, and `convert.from_json`) remain +hand-curated; the migration bootstrap creates the rest without overwriting +those records. + +The generated outputs are intentionally committed so changes to public docs, +the agent-facing bundle, and recipe hinting can be reviewed in the same pull +request as their source records. + +`runtime/wranglespy.json` is the pinned mechanical contract exported from the +WranglesPY recipe namespace. Its producer-owned schema is copied alongside the +Registry schema under `schema/`. The compiler reconciles the manifest with the +curated Markdown and writes the reviewable result to `reports/`. It also reads +all existing `wrangles-docs/wrangle-docs/**/_sources/*.md` quasi-registry +records and accounts for the remaining aggregate and template Markdown files. +Runtime names, required status, defaults, symbols, and common controls must +agree; embedded Python schema and quasi-registry differences are retained as +migration evidence. + +## Commands + +Run these commands from `wrangles-docs`: + +```bash +npm run bootstrap:registry +npm run compile:registry +npm run check:registry +npm run build +``` + +`bootstrap:registry` creates only missing Registry records. Use +`refresh:registry-bootstrap` to regenerate the non-curated first-pass records +after updating the pinned runtime manifest or migration logic. + +`compile:registry` produces the pilot Docusaurus pages and public raw +artifacts. `check:registry` fails when the source is invalid or the committed +generated files are stale. + +Do not edit these generated directories by hand: + +- `wrangles-docs/registry-docs/` +- `wrangles-docs/static/registry/` +- `wrangles-docs/static/schemas/recipes/pilot/` +- `registry/reports/` diff --git a/registry/common/wrangle-controls.yaml b/registry/common/wrangle-controls.yaml new file mode 100644 index 0000000..00712e3 --- /dev/null +++ b/registry/common/wrangle-controls.yaml @@ -0,0 +1,19 @@ +schema_version: "0.1" +controls: + where: + description: Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. + required: false + schema: + type: string + where_params: + description: Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. + required: false + schema: + type: + - array + - object + if: + description: Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. + required: false + schema: + type: string diff --git a/registry/fixtures/convert.case/uppercase-output.input.json b/registry/fixtures/convert.case/uppercase-output.input.json new file mode 100644 index 0000000..1f39714 --- /dev/null +++ b/registry/fixtures/convert.case/uppercase-output.input.json @@ -0,0 +1,8 @@ +[ + { + "product": "Cordless Drill" + }, + { + "product": "bearing seal" + } +] diff --git a/registry/fixtures/convert.case/uppercase-output.output.json b/registry/fixtures/convert.case/uppercase-output.output.json new file mode 100644 index 0000000..e054659 --- /dev/null +++ b/registry/fixtures/convert.case/uppercase-output.output.json @@ -0,0 +1,10 @@ +[ + { + "product": "Cordless Drill", + "product_upper": "CORDLESS DRILL" + }, + { + "product": "bearing seal", + "product_upper": "BEARING SEAL" + } +] diff --git a/registry/fixtures/convert.data_type/integer-with-fallback.input.json b/registry/fixtures/convert.data_type/integer-with-fallback.input.json new file mode 100644 index 0000000..189399d --- /dev/null +++ b/registry/fixtures/convert.data_type/integer-with-fallback.input.json @@ -0,0 +1,8 @@ +[ + { + "quantity": "12" + }, + { + "quantity": "not available" + } +] diff --git a/registry/fixtures/convert.data_type/integer-with-fallback.output.json b/registry/fixtures/convert.data_type/integer-with-fallback.output.json new file mode 100644 index 0000000..4ba685c --- /dev/null +++ b/registry/fixtures/convert.data_type/integer-with-fallback.output.json @@ -0,0 +1,10 @@ +[ + { + "quantity": "12", + "quantity_integer": 12 + }, + { + "quantity": "not available", + "quantity_integer": 0 + } +] diff --git a/registry/fixtures/convert.from_json/parse-structured-values.input.json b/registry/fixtures/convert.from_json/parse-structured-values.input.json new file mode 100644 index 0000000..2b6b562 --- /dev/null +++ b/registry/fixtures/convert.from_json/parse-structured-values.input.json @@ -0,0 +1,8 @@ +[ + { + "attributes_json": "{\"material\":\"steel\",\"voltage\":18}" + }, + { + "attributes_json": "[\"corded\",\"variable speed\"]" + } +] diff --git a/registry/fixtures/convert.from_json/parse-structured-values.output.json b/registry/fixtures/convert.from_json/parse-structured-values.output.json new file mode 100644 index 0000000..1027914 --- /dev/null +++ b/registry/fixtures/convert.from_json/parse-structured-values.output.json @@ -0,0 +1,16 @@ +[ + { + "attributes_json": "{\"material\":\"steel\",\"voltage\":18}", + "attributes": { + "material": "steel", + "voltage": 18 + } + }, + { + "attributes_json": "[\"corded\",\"variable speed\"]", + "attributes": [ + "corded", + "variable speed" + ] + } +] diff --git a/registry/index.md b/registry/index.md new file mode 100644 index 0000000..b9daaab --- /dev/null +++ b/registry/index.md @@ -0,0 +1,20 @@ +--- +okf_version: "0.2" +type: collection +title: Wrangles Registry +description: Versioned knowledge and machine contracts for Wrangles recipe primitives. +status: pilot +tags: + - wrangles + - recipes + - registry +--- + +# Wrangles Registry + +The Registry describes the recipe vocabulary shared by WranglesPY, +WranglesXL, the documentation site, and future Recipe Writer clients. + +The pilot contains three Convert wrangles. Generated indexes and manifests +should be used for discovery; individual files provide the detailed contract, +guidance, examples, provenance, and lifecycle state. diff --git a/registry/reports/runtime-reconciliation.json b/registry/reports/runtime-reconciliation.json new file mode 100644 index 0000000..342065e --- /dev/null +++ b/registry/reports/runtime-reconciliation.json @@ -0,0 +1,14824 @@ +{ + "format": "wrangles-registry-reconciliation", + "format_version": "0.2", + "registry_version": "0.1.0-pilot", + "runtime_source": { + "repository": "https://github.com/wrangleworks/WranglesPY", + "revision": "7916bf158e8b7e561270a1bea7b808f88956edc4" + }, + "summary": { + "runtime_entries": 98, + "embedded_schema_entries": 96, + "quasi_registry_entries": 93, + "normalized_registry_entries": 98, + "normalized_verified_entries": 98, + "normalized_conflicting_entries": 0, + "normalized_entries_with_embedded_schema_differences": 90, + "runtime_entries_without_embedded_schema": 2, + "normalized_and_quasi_entries": 93, + "quasi_entries_awaiting_normalization": 0, + "runtime_entries_without_normalized_registry": 0, + "runtime_entries_without_quasi_registry": 5, + "quasi_entries_without_runtime": 0, + "quasi_entries_without_id": 5, + "supporting_markdown_files": 17 + }, + "normalized_registry_entries": [ + { + "wrangle_key": "accordion", + "matched_runtime_keys": [ + "accordion" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "propagate", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + } + ] + }, + { + "wrangle_key": "batch", + "matched_runtime_keys": [ + "batch" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "batch_size", + "registry_schema": { + "type": "integer" + }, + "docstring_schema": { + "default": 1000, + "type": "integer" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "on_error", + "registry_schema": { + "type": [ + "object", + "null" + ] + }, + "docstring_schema": { + "type": "object" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "timeout", + "registry_schema": { + "type": [ + "number", + "null" + ] + }, + "docstring_schema": { + "type": "number" + } + }, + { + "code": "registry_only_parameter", + "parameter": "use_multiprocessing" + } + ] + }, + { + "wrangle_key": "classify", + "matched_runtime_keys": [ + "classify" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "docstring_allows_additional_properties" + } + ] + }, + { + "wrangle_key": "clean_whitespaces", + "matched_runtime_keys": [ + "clean_whitespaces" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + } + ] + }, + { + "wrangle_key": "compare.lists", + "matched_runtime_keys": [ + "compare.lists" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "docstring_required_mismatch", + "parameter": "method", + "runtime_required": false, + "docstring_required": true + }, + { + "code": "docstring_allows_additional_properties" + } + ] + }, + { + "wrangle_key": "compare.text", + "matched_runtime_keys": [ + "compare.text" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "registry_only_parameter", + "parameter": "all_empty" + }, + { + "code": "registry_only_parameter", + "parameter": "case_sensitive" + }, + { + "code": "registry_only_parameter", + "parameter": "char" + }, + { + "code": "registry_only_parameter", + "parameter": "decimal_places" + }, + { + "code": "registry_only_parameter", + "parameter": "empty_a" + }, + { + "code": "registry_only_parameter", + "parameter": "empty_b" + }, + { + "code": "registry_only_parameter", + "parameter": "exact_match" + }, + { + "code": "registry_only_parameter", + "parameter": "include_ratio" + }, + { + "code": "docstring_required_mismatch", + "parameter": "method", + "runtime_required": false, + "docstring_required": true + }, + { + "code": "registry_only_parameter", + "parameter": "metric" + }, + { + "code": "registry_only_parameter", + "parameter": "non_match_char" + }, + { + "code": "docstring_allows_additional_properties" + } + ] + }, + { + "wrangle_key": "compute.case_when", + "matched_runtime_keys": [ + "compute.case_when" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [] + }, + { + "wrangle_key": "compute.score_search_results", + "matched_runtime_keys": [ + "compute.score_search_results" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "blacklist_keywords", + "registry_schema": { + "type": "string" + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + } + ] + }, + { + "wrangle_key": "concurrent", + "matched_runtime_keys": [ + "concurrent" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "registry_only_parameter", + "parameter": "use_multiprocessing" + }, + { + "code": "schema_constraint_difference", + "parameter": "wrangles", + "registry_schema": { + "items": { + "$ref": "#/$defs/wrangles/items" + }, + "minItems": 1, + "type": "array" + }, + "docstring_schema": { + "items": [ + { + "$ref": "#/$defs/wrangles/items" + } + ], + "minItems": 1, + "type": "array" + } + } + ] + }, + { + "wrangle_key": "convert.case", + "matched_runtime_keys": [ + "convert.case" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "docstring_required_mismatch", + "parameter": "case", + "runtime_required": false, + "docstring_required": true + }, + { + "code": "schema_constraint_difference", + "parameter": "input", + "registry_schema": { + "items": { + "type": [ + "string", + "integer" + ] + }, + "type": [ + "string", + "integer", + "array" + ] + }, + "docstring_schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "items": { + "type": "string" + }, + "type": [ + "string", + "array" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + } + ] + }, + { + "wrangle_key": "convert.data_type", + "matched_runtime_keys": [ + "convert.data_type" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "docstring_required_mismatch", + "parameter": "data_type", + "runtime_required": false, + "docstring_required": true + }, + { + "code": "schema_constraint_difference", + "parameter": "default", + "registry_schema": { + "type": [ + "string", + "number", + "array", + "object", + "boolean", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "number", + "array", + "boolean", + "datetime" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "input", + "registry_schema": { + "items": { + "type": [ + "string", + "integer" + ] + }, + "type": [ + "string", + "integer", + "array" + ] + }, + "docstring_schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "items": { + "type": "string" + }, + "type": [ + "string", + "array" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + } + ] + }, + { + "wrangle_key": "convert.fraction_to_decimal", + "matched_runtime_keys": [ + "convert.fraction_to_decimal" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "decimals", + "registry_schema": { + "type": "integer" + }, + "docstring_schema": { + "type": [ + "number" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + } + ] + }, + { + "wrangle_key": "convert.from_json", + "matched_runtime_keys": [ + "convert.from_json" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "default", + "registry_schema": { + "type": [ + "string", + "number", + "array", + "object", + "boolean", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array", + "object", + "number", + "boolean", + "null" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "input", + "registry_schema": { + "items": { + "type": [ + "string", + "integer" + ] + }, + "type": [ + "string", + "integer", + "array" + ] + }, + "docstring_schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "items": { + "type": "string" + }, + "type": [ + "string", + "array" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "code": "docstring_allows_additional_properties" + } + ] + }, + { + "wrangle_key": "convert.from_yaml", + "matched_runtime_keys": [ + "convert.from_yaml" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "code": "docstring_allows_additional_properties" + } + ] + }, + { + "wrangle_key": "convert.to_json", + "matched_runtime_keys": [ + "convert.to_json" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "code": "docstring_allows_additional_properties" + } + ] + }, + { + "wrangle_key": "convert.to_yaml", + "matched_runtime_keys": [ + "convert.to_yaml" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "registry_only_parameter", + "parameter": "allow_unicode" + }, + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "code": "docstring_allows_additional_properties" + } + ] + }, + { + "wrangle_key": "copy", + "matched_runtime_keys": [ + "copy" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "docstring_required_mismatch", + "parameter": "input", + "runtime_required": false, + "docstring_required": true + }, + { + "code": "schema_constraint_difference", + "parameter": "input", + "registry_schema": { + "type": [ + "string", + "integer", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "code": "docstring_required_mismatch", + "parameter": "output", + "runtime_required": false, + "docstring_required": true + }, + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + } + ] + }, + { + "wrangle_key": "create.bins", + "matched_runtime_keys": [ + "create.bins" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "input", + "registry_schema": { + "type": [ + "string", + "integer", + "array" + ] + }, + "docstring_schema": { + "type": [ + "array" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "labels", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array" + ] + }, + "docstring_schema": { + "type": [ + "array" + ] + } + } + ] + }, + { + "wrangle_key": "create.column", + "matched_runtime_keys": [ + "create.column" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "value", + "registry_schema": { + "type": [ + "string", + "number", + "object", + "array", + "boolean", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "number", + "object", + "array", + "boolean" + ] + } + } + ] + }, + { + "wrangle_key": "create.embeddings", + "matched_runtime_keys": [ + "create.embeddings" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "input", + "registry_schema": { + "type": "string" + }, + "docstring_schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "provider", + "registry_schema": { + "enum": [ + "openai", + "jina" + ], + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "enum": [ + "openai", + "jina" + ], + "type": "string" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "task", + "registry_schema": { + "enum": [ + "retrieval.query", + "retrieval.passage", + "text-matching", + "classification", + "separation" + ], + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "enum": [ + "retrieval.query", + "retrieval.passage", + "text-matching", + "classification", + "separation" + ], + "type": "string" + } + }, + { + "code": "docstring_allows_additional_properties" + } + ] + }, + { + "wrangle_key": "create.guid", + "matched_runtime_keys": [ + "create.guid" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [] + }, + { + "wrangle_key": "create.hash", + "matched_runtime_keys": [ + "create.hash" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "docstring_required_mismatch", + "parameter": "output", + "runtime_required": true, + "docstring_required": false + } + ] + }, + { + "wrangle_key": "create.index", + "matched_runtime_keys": [ + "create.index" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "by", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + } + ] + }, + { + "wrangle_key": "create.jinja", + "matched_runtime_keys": [ + "create.jinja" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "input", + "registry_schema": { + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "integer" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": "array" + }, + "docstring_schema": { + "type": "string" + } + } + ] + }, + { + "wrangle_key": "create.uuid", + "matched_runtime_keys": [ + "create.uuid" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [] + }, + { + "wrangle_key": "date_calculator", + "matched_runtime_keys": [ + "date_calculator" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "input", + "registry_schema": { + "type": "string" + }, + "docstring_schema": { + "type": [ + "string", + "integer" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "type": "string" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "time_unit", + "registry_schema": { + "enum": [ + "years", + "months", + "weeks", + "days", + "hours", + "minutes", + "seconds", + "milliseconds" + ], + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "enum": [ + "years", + "months", + "weeks", + "days", + "hours", + "minutes", + "seconds", + "milliseconds" + ], + "type": "string" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "time_value", + "registry_schema": { + "type": [ + "number", + "null" + ] + }, + "docstring_schema": { + "type": "number" + } + } + ] + }, + { + "wrangle_key": "drop", + "matched_runtime_keys": [ + "drop" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "columns", + "registry_schema": { + "type": [ + "string", + "array" + ] + }, + "docstring_schema": { + "type": [ + "array", + "string" + ] + } + }, + { + "code": "docstring_allows_additional_properties" + } + ] + }, + { + "wrangle_key": "explode", + "matched_runtime_keys": [ + "explode" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [] + }, + { + "wrangle_key": "extract.address", + "matched_runtime_keys": [ + "extract.address" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "docstring_required_mismatch", + "parameter": "dataType", + "runtime_required": true, + "docstring_required": false + }, + { + "code": "schema_constraint_difference", + "parameter": "output_format", + "registry_schema": { + "enum": [ + "list", + "columns", + "concatenate" + ], + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "enum": [ + "list", + "columns", + "concatenate" + ], + "type": "string" + } + }, + { + "code": "docstring_allows_additional_properties" + } + ] + }, + { + "wrangle_key": "extract.ai", + "matched_runtime_keys": [ + "extract.ai" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "input", + "registry_schema": { + "items": { + "type": [ + "string", + "integer" + ] + }, + "type": [ + "array", + "null" + ] + }, + "docstring_schema": { + "items": { + "type": [ + "string", + "integer" + ] + }, + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "instructions", + "registry_schema": { + "items": { + "type": "string" + }, + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "items": { + "type": "string" + }, + "type": [ + "string", + "array" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "model_id", + "registry_schema": { + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "type": "string" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "patternProperties": { + "^[a-zA-Z0-9 _-]+$": { + "properties": { + "additionalProperties": { + "type": [ + "boolean", + "object" + ] + }, + "enum": { + "type": "array" + }, + "examples": { + "items": { + "anyOf": [ + { + "properties": { + "input": {}, + "name": { + "type": "string" + }, + "notes": { + "type": "string" + }, + "output": {} + }, + "required": [ + "input", + "output" + ], + "type": "object" + }, + {} + ] + }, + "properties": { + "input": {}, + "name": { + "type": "string" + }, + "notes": { + "type": "string" + }, + "output": {} + }, + "type": [ + "array", + "object", + "string", + "number", + "integer", + "boolean", + "null" + ] + }, + "items": { + "type": "object" + }, + "nullable": { + "type": "boolean" + }, + "properties": { + "type": [ + "object", + "array", + "string" + ] + }, + "required": { + "type": [ + "array", + "string" + ] + }, + "type": { + "enum": [ + "string", + "number", + "integer", + "boolean", + "null", + "object", + "array" + ], + "type": "string" + } + }, + "type": [ + "object", + "string" + ] + } + }, + "type": [ + "string", + "array", + "object", + "null" + ] + }, + "docstring_schema": { + "patternProperties": { + "^[a-zA-Z0-9 _-]+$": { + "properties": { + "additionalProperties": { + "type": [ + "boolean", + "object" + ] + }, + "default": { + "type": [ + "string", + "number", + "integer", + "boolean", + "null", + "object", + "array" + ] + }, + "enum": { + "type": "array" + }, + "examples": { + "items": { + "anyOf": [ + { + "properties": { + "input": {}, + "name": { + "type": "string" + }, + "notes": { + "type": "string" + }, + "output": {} + }, + "required": [ + "input", + "output" + ], + "type": "object" + }, + {} + ] + }, + "properties": { + "input": {}, + "name": { + "type": "string" + }, + "notes": { + "type": "string" + }, + "output": {} + }, + "type": [ + "array", + "object", + "string", + "number", + "integer", + "boolean", + "null" + ] + }, + "items": { + "type": "object" + }, + "nullable": { + "type": "boolean" + }, + "properties": { + "type": [ + "object", + "array", + "string" + ] + }, + "required": { + "type": [ + "array", + "string" + ] + }, + "type": { + "enum": [ + "string", + "number", + "integer", + "boolean", + "null", + "object", + "array" + ], + "type": "string" + } + }, + "type": [ + "object", + "string" + ] + } + }, + "type": [ + "object", + "string", + "array" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "output_format", + "registry_schema": { + "enum": [ + "dictionary", + "columns", + "concatenate" + ], + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "enum": [ + "dictionary", + "columns", + "concatenate" + ], + "type": "string" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "record_examples", + "registry_schema": { + "items": { + "properties": { + "input": {}, + "name": { + "type": "string" + }, + "notes": { + "type": "string" + }, + "output": {} + }, + "required": [ + "input", + "output" + ], + "type": "object" + }, + "properties": { + "input": {}, + "name": { + "type": "string" + }, + "notes": { + "type": "string" + }, + "output": {} + }, + "required": [ + "input", + "output" + ], + "type": [ + "array", + "object", + "null" + ] + }, + "docstring_schema": { + "items": { + "properties": { + "input": {}, + "name": { + "type": "string" + }, + "notes": { + "type": "string" + }, + "output": {} + }, + "required": [ + "input", + "output" + ], + "type": "object" + }, + "properties": { + "input": {}, + "name": { + "type": "string" + }, + "notes": { + "type": "string" + }, + "output": {} + }, + "required": [ + "input", + "output" + ], + "type": [ + "array", + "object" + ] + } + } + ] + }, + { + "wrangle_key": "extract.attributes", + "matched_runtime_keys": [ + "extract.attributes" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "attribute_type", + "registry_schema": { + "enum": [ + "angle", + "area", + "capacitance", + "charge", + "current", + "data transfer rate", + "electrical conductance", + "electrical resistance", + "energy", + "force", + "frequency", + "inductance", + "instance frequency", + "length", + "luminous flux", + "weight", + "power", + "pressure", + "speed", + "velocity", + "temperature", + "time", + "voltage", + "volume", + "volumetric flow" + ], + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "enum": [ + "angle", + "area", + "capacitance", + "charge", + "current", + "data transfer rate", + "electrical conductance", + "electrical resistance", + "energy", + "force", + "frequency", + "inductance", + "instance frequency", + "length", + "luminous flux", + "weight", + "power", + "pressure", + "speed", + "velocity", + "temperature", + "time", + "voltage", + "volume", + "volumetric flow" + ], + "type": "string" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "desired_unit", + "registry_schema": { + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "type": "string" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "output_format", + "registry_schema": { + "enum": [ + "list", + "dictionary", + "columns", + "concatenate" + ], + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "enum": [ + "list", + "dictionary", + "columns", + "concatenate" + ], + "type": "string" + } + }, + { + "code": "docstring_allows_additional_properties" + } + ] + }, + { + "wrangle_key": "extract.brackets", + "matched_runtime_keys": [ + "extract.brackets" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "output_format", + "registry_schema": { + "enum": [ + "list", + "columns", + "concatenate" + ], + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "enum": [ + "list", + "columns", + "concatenate" + ], + "type": "string" + } + } + ] + }, + { + "wrangle_key": "extract.codes", + "matched_runtime_keys": [ + "extract.codes" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "output_format", + "registry_schema": { + "enum": [ + "list", + "columns", + "concatenate" + ], + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "enum": [ + "list", + "columns", + "concatenate" + ], + "type": "string" + } + }, + { + "code": "docstring_allows_additional_properties" + } + ] + }, + { + "wrangle_key": "extract.custom", + "matched_runtime_keys": [ + "extract.custom" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "output_format", + "registry_schema": { + "enum": [ + "list", + "dictionary", + "columns", + "concatenate" + ], + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "enum": [ + "list", + "dictionary", + "columns", + "concatenate" + ], + "type": "string" + } + }, + { + "code": "docstring_allows_additional_properties" + } + ] + }, + { + "wrangle_key": "extract.date_properties", + "matched_runtime_keys": [ + "extract.date_properties" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + } + ] + }, + { + "wrangle_key": "extract.date_range", + "matched_runtime_keys": [ + "extract.date_range" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "docstring_required_mismatch", + "parameter": "range", + "runtime_required": false, + "docstring_required": true + } + ] + }, + { + "wrangle_key": "extract.html", + "matched_runtime_keys": [ + "extract.html" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "docstring_required_mismatch", + "parameter": "output", + "runtime_required": false, + "docstring_required": true + }, + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "output_format", + "registry_schema": { + "enum": [ + "list", + "columns", + "concatenate" + ], + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "enum": [ + "list", + "columns", + "concatenate" + ], + "type": "string" + } + }, + { + "code": "docstring_allows_additional_properties" + } + ] + }, + { + "wrangle_key": "extract.properties", + "matched_runtime_keys": [ + "extract.properties" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "output_format", + "registry_schema": { + "enum": [ + "list", + "dictionary", + "columns", + "concatenate" + ], + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "enum": [ + "list", + "dictionary", + "columns", + "concatenate" + ], + "type": "string" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "property_type", + "registry_schema": { + "enum": [ + "Colours", + "Materials", + "Shapes", + "Standards" + ], + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "enum": [ + "Colours", + "Materials", + "Shapes", + "Standards" + ], + "type": "string" + } + }, + { + "code": "docstring_allows_additional_properties" + } + ] + }, + { + "wrangle_key": "extract.regex", + "matched_runtime_keys": [ + "extract.regex" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "output_format", + "registry_schema": { + "enum": [ + "list", + "columns", + "concatenate" + ], + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "enum": [ + "list", + "columns", + "concatenate" + ], + "type": "string" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "output_pattern", + "registry_schema": { + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "type": "string" + } + } + ] + }, + { + "wrangle_key": "filter", + "matched_runtime_keys": [ + "filter" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "between", + "registry_schema": { + "type": [ + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "array" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "contains", + "registry_schema": { + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "type": "string" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "equal", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array", + "boolean", + "number" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "greater_than", + "registry_schema": { + "type": [ + "integer", + "number", + "null" + ] + }, + "docstring_schema": { + "type": [ + "integer", + "number" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "greater_than_equal_to", + "registry_schema": { + "type": [ + "integer", + "number", + "null" + ] + }, + "docstring_schema": { + "type": [ + "integer", + "number" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "is_in", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "array", + "string" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "is_null", + "registry_schema": { + "type": [ + "boolean", + "null" + ] + }, + "docstring_schema": { + "type": "boolean" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "less_than", + "registry_schema": { + "type": [ + "integer", + "number", + "null" + ] + }, + "docstring_schema": { + "type": [ + "integer", + "number" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "less_than_equal_to", + "registry_schema": { + "type": [ + "integer", + "number", + "null" + ] + }, + "docstring_schema": { + "type": [ + "integer", + "number" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "not_contains", + "registry_schema": { + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "type": "string" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "not_equal", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array", + "boolean", + "number" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "not_in", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "array", + "string" + ] + } + }, + { + "code": "docstring_only_parameter", + "parameter": "where" + }, + { + "code": "docstring_only_parameter", + "parameter": "where_params" + } + ] + }, + { + "wrangle_key": "format.dates", + "matched_runtime_keys": [ + "format.dates" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "format", + "registry_schema": { + "type": "string" + }, + "docstring_schema": { + "type": [ + "string" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + } + ] + }, + { + "wrangle_key": "format.pad", + "matched_runtime_keys": [ + "format.pad" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "char", + "registry_schema": { + "type": "string" + }, + "docstring_schema": { + "type": [ + "string" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "pad_length", + "registry_schema": { + "type": "integer" + }, + "docstring_schema": { + "type": [ + "number" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "side", + "registry_schema": { + "type": "string" + }, + "docstring_schema": { + "type": [ + "string" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "skip_empty", + "registry_schema": { + "type": "boolean" + }, + "docstring_schema": { + "default": false, + "type": "boolean" + } + } + ] + }, + { + "wrangle_key": "format.prefix", + "matched_runtime_keys": [ + "format.prefix" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "skip_empty", + "registry_schema": { + "type": "boolean" + }, + "docstring_schema": { + "default": false, + "type": "boolean" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "value", + "registry_schema": { + "type": [ + "string", + "integer", + "number" + ] + }, + "docstring_schema": { + "type": [ + "string", + "number" + ] + } + } + ] + }, + { + "wrangle_key": "format.price_breaks", + "matched_runtime_keys": [ + "format.price_breaks" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "missing_docstring_schema" + } + ] + }, + { + "wrangle_key": "format.remove_duplicates", + "matched_runtime_keys": [ + "format.remove_duplicates" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + } + ] + }, + { + "wrangle_key": "format.significant_figures", + "matched_runtime_keys": [ + "format.significant_figures" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "significant_figures", + "registry_schema": { + "type": "integer" + }, + "docstring_schema": { + "type": [ + "integer" + ] + } + } + ] + }, + { + "wrangle_key": "format.suffix", + "matched_runtime_keys": [ + "format.suffix" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "skip_empty", + "registry_schema": { + "type": "boolean" + }, + "docstring_schema": { + "default": false, + "type": "boolean" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "value", + "registry_schema": { + "type": [ + "string", + "integer", + "number", + "array" + ] + }, + "docstring_schema": { + "type": [ + "string", + "number" + ] + } + } + ] + }, + { + "wrangle_key": "format.trim", + "matched_runtime_keys": [ + "format.trim" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + } + ] + }, + { + "wrangle_key": "generate.ai", + "matched_runtime_keys": [ + "generate.ai" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "input", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "messages", + "registry_schema": { + "type": [ + "array", + "object", + "null" + ] + }, + "docstring_schema": { + "type": "array" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "object" + ] + }, + "docstring_schema": { + "type": [ + "string", + "object", + "array" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "reasoning", + "registry_schema": { + "type": [ + "string", + "object" + ] + }, + "docstring_schema": { + "type": "object" + } + } + ] + }, + { + "wrangle_key": "huggingface", + "matched_runtime_keys": [ + "huggingface" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "parameters", + "registry_schema": { + "type": [ + "object", + "null" + ] + }, + "docstring_schema": { + "type": "object" + } + }, + { + "code": "docstring_allows_additional_properties" + } + ] + }, + { + "wrangle_key": "log", + "matched_runtime_keys": [ + "log" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "columns", + "registry_schema": { + "type": [ + "array", + "null" + ] + }, + "docstring_schema": { + "type": "array" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "info", + "registry_schema": { + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "type": "string" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "log_data", + "registry_schema": { + "type": [ + "boolean", + "null" + ] + }, + "docstring_schema": { + "type": "boolean" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "warning", + "registry_schema": { + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "type": "string" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "write", + "registry_schema": { + "items": { + "$ref": "#/$defs/write/items" + }, + "minItems": 1, + "type": [ + "array", + "null" + ] + }, + "docstring_schema": { + "items": { + "$ref": "#/$defs/write/items" + }, + "minItems": 1, + "type": "array" + } + } + ] + }, + { + "wrangle_key": "lookup", + "matched_runtime_keys": [ + "lookup" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "input", + "registry_schema": { + "type": "string" + }, + "docstring_schema": { + "type": [ + "string", + "integer" + ] + } + }, + { + "code": "docstring_required_mismatch", + "parameter": "model_id", + "runtime_required": false, + "docstring_required": true + }, + { + "code": "schema_constraint_difference", + "parameter": "model_id", + "registry_schema": { + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "type": "string" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "n", + "registry_schema": { + "type": [ + "integer", + "null" + ] + }, + "docstring_schema": { + "type": "integer" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "code": "docstring_allows_additional_properties" + } + ] + }, + { + "wrangle_key": "math", + "matched_runtime_keys": [ + "math" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "input", + "registry_schema": { + "type": "string" + }, + "docstring_schema": { + "type": [ + "string", + "integer" + ] + } + } + ] + }, + { + "wrangle_key": "maths", + "matched_runtime_keys": [ + "maths" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "missing_docstring_schema" + } + ] + }, + { + "wrangle_key": "matrix", + "matched_runtime_keys": [ + "matrix" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "docstring_allows_additional_properties" + } + ] + }, + { + "wrangle_key": "merge.coalesce", + "matched_runtime_keys": [ + "merge.coalesce" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "input", + "registry_schema": { + "type": "array" + }, + "docstring_schema": { + "type": [ + "array", + "string", + "integer" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "type": "string" + } + } + ] + }, + { + "wrangle_key": "merge.concatenate", + "matched_runtime_keys": [ + "merge.concatenate" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "docstring_required_mismatch", + "parameter": "char", + "runtime_required": false, + "docstring_required": true + }, + { + "code": "schema_constraint_difference", + "parameter": "input", + "registry_schema": { + "type": [ + "string", + "integer", + "array" + ] + }, + "docstring_schema": { + "type": [ + "array", + "string", + "integer" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "skip_empty", + "registry_schema": { + "desription": "Whether to skip empty values", + "type": "boolean" + }, + "docstring_schema": { + "default": false, + "desription": "Whether to skip empty values", + "type": "boolean" + } + } + ] + }, + { + "wrangle_key": "merge.dictionaries", + "matched_runtime_keys": [ + "merge.dictionaries" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "skip_empty", + "registry_schema": { + "type": "boolean" + }, + "docstring_schema": { + "default": false, + "type": "boolean" + } + } + ] + }, + { + "wrangle_key": "merge.key_value_pairs", + "matched_runtime_keys": [ + "merge.key_value_pairs" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "skip_empty", + "registry_schema": { + "type": "boolean" + }, + "docstring_schema": { + "default": false, + "type": "boolean" + } + } + ] + }, + { + "wrangle_key": "merge.lists", + "matched_runtime_keys": [ + "merge.lists" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [] + }, + { + "wrangle_key": "merge.to_dict", + "matched_runtime_keys": [ + "merge.to_dict" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "input", + "registry_schema": { + "type": "array" + }, + "docstring_schema": { + "type": [ + "array", + "string", + "integer" + ] + } + } + ] + }, + { + "wrangle_key": "merge.to_list", + "matched_runtime_keys": [ + "merge.to_list" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "input", + "registry_schema": { + "type": "array" + }, + "docstring_schema": { + "type": [ + "array", + "string", + "integer" + ] + } + } + ] + }, + { + "wrangle_key": "python", + "matched_runtime_keys": [ + "python" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "input", + "registry_schema": { + "type": [ + "string", + "integer", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "code": "docstring_allows_additional_properties" + } + ] + }, + { + "wrangle_key": "recipe", + "matched_runtime_keys": [ + "recipe" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "registry_only_parameter", + "parameter": "input" + }, + { + "code": "docstring_required_mismatch", + "parameter": "name", + "runtime_required": false, + "docstring_required": true + }, + { + "code": "schema_constraint_difference", + "parameter": "name", + "registry_schema": { + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "type": "string" + } + }, + { + "code": "registry_only_parameter", + "parameter": "output" + }, + { + "code": "schema_constraint_difference", + "parameter": "variables", + "registry_schema": { + "type": [ + "object", + "null" + ] + }, + "docstring_schema": { + "type": "object" + } + }, + { + "code": "docstring_allows_additional_properties" + } + ] + }, + { + "wrangle_key": "reindex", + "matched_runtime_keys": [ + "reindex" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "axis", + "registry_schema": { + "type": [ + "string", + "integer", + "null" + ] + }, + "docstring_schema": { + "type": [ + "number", + "string" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "columns", + "registry_schema": { + "type": [ + "array", + "null" + ] + }, + "docstring_schema": { + "type": "array" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "index", + "registry_schema": { + "type": [ + "array", + "null" + ] + }, + "docstring_schema": { + "type": "array" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "labels", + "registry_schema": { + "type": [ + "array", + "null" + ] + }, + "docstring_schema": { + "type": "array" + } + } + ] + }, + { + "wrangle_key": "remove_words", + "matched_runtime_keys": [ + "remove_words" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "docstring_required_mismatch", + "parameter": "output", + "runtime_required": false, + "docstring_required": true + }, + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "to_remove", + "registry_schema": { + "type": "string" + }, + "docstring_schema": { + "type": "array" + } + } + ] + }, + { + "wrangle_key": "rename", + "matched_runtime_keys": [ + "rename" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "input", + "registry_schema": { + "type": [ + "string", + "integer", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "wrangles", + "registry_schema": { + "items": { + "$ref": "#/$defs/wrangles/items" + }, + "minItems": 1, + "type": [ + "array", + "null" + ] + }, + "docstring_schema": { + "items": { + "$ref": "#/$defs/wrangles/items" + }, + "minItems": 1, + "type": "array" + } + }, + { + "code": "docstring_allows_additional_properties" + } + ] + }, + { + "wrangle_key": "replace", + "matched_runtime_keys": [ + "replace" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + } + ] + }, + { + "wrangle_key": "round", + "matched_runtime_keys": [ + "round" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "decimals", + "registry_schema": { + "type": "integer" + }, + "docstring_schema": { + "type": "number" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + } + ] + }, + { + "wrangle_key": "search.find_links", + "matched_runtime_keys": [ + "search.find_links" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "api_key", + "registry_schema": { + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "type": "string" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "client", + "registry_schema": { + "enum": [ + "serpapi" + ], + "type": "string" + }, + "docstring_schema": { + "default": "serpapi", + "enum": [ + "serpapi" + ], + "type": "string" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "country", + "registry_schema": { + "type": "string" + }, + "docstring_schema": { + "default": "us", + "type": "string" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "language", + "registry_schema": { + "type": "string" + }, + "docstring_schema": { + "default": "en", + "type": "string" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "n_results", + "registry_schema": { + "type": "integer" + }, + "docstring_schema": { + "default": 10, + "type": "integer" + } + }, + { + "code": "docstring_required_mismatch", + "parameter": "output", + "runtime_required": false, + "docstring_required": true + }, + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "threads", + "registry_schema": { + "type": "integer" + }, + "docstring_schema": { + "default": 10, + "type": "integer" + } + } + ] + }, + { + "wrangle_key": "search.retrieve_link_content", + "matched_runtime_keys": [ + "search.retrieve_link_content" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "api_key", + "registry_schema": { + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "type": "string" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "client", + "registry_schema": { + "enum": [ + "google_url_context" + ], + "type": "string" + }, + "docstring_schema": { + "default": "google_url_context", + "enum": [ + "google_url_context" + ], + "type": "string" + } + }, + { + "code": "docstring_required_mismatch", + "parameter": "output", + "runtime_required": false, + "docstring_required": true + }, + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "output_format", + "registry_schema": { + "enum": [ + "markdown", + "json" + ], + "type": "string" + }, + "docstring_schema": { + "default": "json", + "enum": [ + "markdown", + "json" + ], + "type": "string" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "prompt", + "registry_schema": { + "type": [ + "string", + "null" + ] + }, + "docstring_schema": { + "type": "string" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "threads", + "registry_schema": { + "type": "integer" + }, + "docstring_schema": { + "default": 10, + "type": "integer" + } + } + ] + }, + { + "wrangle_key": "select.columns", + "matched_runtime_keys": [ + "select.columns" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [] + }, + { + "wrangle_key": "select.dictionary_element", + "matched_runtime_keys": [ + "select.dictionary_element" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "element", + "registry_schema": { + "type": "string" + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + } + ] + }, + { + "wrangle_key": "select.element", + "matched_runtime_keys": [ + "select.element" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "default", + "registry_schema": { + "type": [ + "string", + "number", + "array", + "object", + "boolean", + "null" + ] + }, + "docstring_schema": { + "default": "", + "type": [ + "string", + "number", + "array", + "object", + "boolean" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + } + ] + }, + { + "wrangle_key": "select.group_by", + "matched_runtime_keys": [ + "select.group_by" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "docstring_allows_additional_properties" + } + ] + }, + { + "wrangle_key": "select.head", + "matched_runtime_keys": [ + "select.head" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "docstring_allows_additional_properties" + } + ] + }, + { + "wrangle_key": "select.highest_confidence", + "matched_runtime_keys": [ + "select.highest_confidence" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array" + ] + }, + "docstring_schema": { + "type": [ + "array", + "string" + ] + } + } + ] + }, + { + "wrangle_key": "select.left", + "matched_runtime_keys": [ + "select.left" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + } + ] + }, + { + "wrangle_key": "select.length", + "matched_runtime_keys": [ + "select.length" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "code": "docstring_allows_additional_properties" + } + ] + }, + { + "wrangle_key": "select.list_element", + "matched_runtime_keys": [ + "select.list_element" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "docstring_required_mismatch", + "parameter": "element", + "runtime_required": false, + "docstring_required": true + }, + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + } + ] + }, + { + "wrangle_key": "select.right", + "matched_runtime_keys": [ + "select.right" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + } + ] + }, + { + "wrangle_key": "select.sample", + "matched_runtime_keys": [ + "select.sample" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "docstring_allows_additional_properties" + } + ] + }, + { + "wrangle_key": "select.substring", + "matched_runtime_keys": [ + "select.substring" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "docstring_required_mismatch", + "parameter": "length", + "runtime_required": false, + "docstring_required": true + }, + { + "code": "schema_constraint_difference", + "parameter": "length", + "registry_schema": { + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "docstring_schema": { + "minimum": 1, + "type": "integer" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "code": "docstring_required_mismatch", + "parameter": "start", + "runtime_required": false, + "docstring_required": true + }, + { + "code": "schema_constraint_difference", + "parameter": "start", + "registry_schema": { + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "docstring_schema": { + "minimum": 1, + "type": "integer" + } + } + ] + }, + { + "wrangle_key": "select.tail", + "matched_runtime_keys": [ + "select.tail" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "docstring_allows_additional_properties" + } + ] + }, + { + "wrangle_key": "select.threshold", + "matched_runtime_keys": [ + "select.threshold" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [] + }, + { + "wrangle_key": "similarity", + "matched_runtime_keys": [ + "similarity" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [] + }, + { + "wrangle_key": "sort", + "matched_runtime_keys": [ + "sort" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "registry_only_parameter", + "parameter": "ignore_index" + }, + { + "code": "docstring_allows_additional_properties" + } + ] + }, + { + "wrangle_key": "split.dictionary", + "matched_runtime_keys": [ + "split.dictionary" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "default", + "registry_schema": { + "type": [ + "object", + "null" + ] + }, + "docstring_schema": { + "type": "object" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + } + ] + }, + { + "wrangle_key": "split.list", + "matched_runtime_keys": [ + "split.list" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "input", + "registry_schema": { + "type": [ + "string", + "integer" + ] + }, + "docstring_schema": { + "type": [ + "string", + "int" + ] + } + } + ] + }, + { + "wrangle_key": "split.text", + "matched_runtime_keys": [ + "split.text" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "element", + "registry_schema": { + "type": [ + "string", + "integer", + "null" + ] + }, + "docstring_schema": { + "type": [ + "integer", + "string" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "pad", + "registry_schema": { + "type": [ + "boolean", + "null" + ] + }, + "docstring_schema": { + "type": "boolean" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "skip_empty", + "registry_schema": { + "type": "boolean" + }, + "docstring_schema": { + "default": false, + "type": "boolean" + } + } + ] + }, + { + "wrangle_key": "split.tokenize", + "matched_runtime_keys": [ + "split.tokenize" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + } + ] + }, + { + "wrangle_key": "sql", + "matched_runtime_keys": [ + "sql" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "params", + "registry_schema": { + "type": [ + "array", + "object", + "null" + ] + }, + "docstring_schema": { + "type": [ + "array", + "object" + ] + } + }, + { + "code": "registry_only_parameter", + "parameter": "preserve_data_types" + }, + { + "code": "registry_only_parameter", + "parameter": "preserve_index" + } + ] + }, + { + "wrangle_key": "standardize", + "matched_runtime_keys": [ + "standardize" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "docstring_required_mismatch", + "parameter": "model_id", + "runtime_required": true, + "docstring_required": false + }, + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "code": "docstring_allows_additional_properties" + } + ] + }, + { + "wrangle_key": "standardize.clean", + "matched_runtime_keys": [ + "standardize.clean" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "collapse_whitespace", + "registry_schema": { + "type": "boolean" + }, + "docstring_schema": { + "default": true, + "type": "boolean" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "fix_character_width", + "registry_schema": { + "type": "boolean" + }, + "docstring_schema": { + "default": true, + "type": "boolean" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "fix_encoding", + "registry_schema": { + "type": "boolean" + }, + "docstring_schema": { + "default": true, + "type": "boolean" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "normalization", + "registry_schema": { + "enum": [ + "NFC", + "NFKC", + "NFD", + "NFKD", + null + ], + "type": "string" + }, + "docstring_schema": { + "default": "NFC", + "enum": [ + "NFC", + "NFKC", + "NFD", + "NFKD", + null + ], + "type": [ + "string", + "null" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "integer", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "code": "schema_constraint_difference", + "parameter": "preserve_line_breaks", + "registry_schema": { + "type": "boolean" + }, + "docstring_schema": { + "default": false, + "type": "boolean" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "remove_control_chars", + "registry_schema": { + "type": "boolean" + }, + "docstring_schema": { + "default": true, + "type": "boolean" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "separator", + "registry_schema": { + "type": "string" + }, + "docstring_schema": { + "default": " ", + "type": "string" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "trim", + "registry_schema": { + "type": "boolean" + }, + "docstring_schema": { + "default": true, + "type": "boolean" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "uncurl_quotes", + "registry_schema": { + "type": "boolean" + }, + "docstring_schema": { + "default": true, + "type": "boolean" + } + }, + { + "code": "schema_constraint_difference", + "parameter": "unescape_html", + "registry_schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "enum": [ + "auto" + ], + "type": "string" + } + ] + }, + "docstring_schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "enum": [ + "auto" + ], + "type": "string" + } + ], + "default": "auto" + } + }, + { + "code": "docstring_allows_additional_properties" + } + ] + }, + { + "wrangle_key": "standardize.custom", + "matched_runtime_keys": [ + "standardize.custom" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "docstring_required_mismatch", + "parameter": "model_id", + "runtime_required": true, + "docstring_required": false + }, + { + "code": "schema_constraint_difference", + "parameter": "output", + "registry_schema": { + "type": [ + "string", + "array", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "code": "docstring_allows_additional_properties" + } + ] + }, + { + "wrangle_key": "translate", + "matched_runtime_keys": [ + "translate" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "registry_only_parameter", + "parameter": "case" + } + ] + }, + { + "wrangle_key": "transpose", + "matched_runtime_keys": [ + "transpose" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "header_column", + "registry_schema": { + "type": [ + "string", + "integer", + "null" + ] + }, + "docstring_schema": { + "type": [ + "string", + "integer", + null + ] + } + } + ] + }, + { + "wrangle_key": "try", + "matched_runtime_keys": [ + "try" + ], + "status": "verified", + "runtime_issues": [], + "embedded_schema_differences": [ + { + "code": "schema_constraint_difference", + "parameter": "except", + "registry_schema": { + "items": { + "$ref": "#/$defs/wrangles/items" + }, + "minItems": 1, + "type": "object" + }, + "docstring_schema": { + "items": { + "$ref": "#/$defs/wrangles/items" + }, + "minItems": 1, + "type": [ + "object" + ] + } + }, + { + "code": "docstring_allows_additional_properties" + } + ] + } + ], + "quasi_registry_entries": [ + { + "wrangle_key": "accordion", + "source_file": "wrangles-docs/wrangle-docs/utility/_sources/accordion.md", + "source_sha256": "000d78a9cd916a71d52bd8e5280da173137e08c468397b60567097f414409661", + "id": null, + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "required_mismatch", + "parameter": "output", + "quasi_registry_required": true, + "runtime_required": false + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_required_mismatch", + "parameter": "output", + "quasi_registry_required": true, + "embedded_schema_required": false + } + ], + "normalized_registry_differences": [ + { + "code": "required_mismatch", + "parameter": "output", + "quasi_registry_required": true, + "normalized_registry_required": false + } + ], + "migration_content": { + "title": "Accordion", + "type": "utility", + "subtype": "", + "variant": "stock", + "status": "active (legacy documentation)", + "tags": [ + "Utility", + "accordion" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Column or columns containing the lists whose elements will be processed. Multiple list columns must contain matching element counts.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "list", + "description": "Columns returned to the dataframe. Columns created inside the accordion are dropped unless listed here.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "wrangles", + "required": true, + "label": "Wrangles", + "ui_type": "json", + "description": "Wrangles to apply to each list element.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "propagate", + "required": false, + "label": "Propagate", + "ui_type": "list", + "description": "Limit the columns available to the nested wrangles and replicated for each element. All columns are propagated when omitted.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter rows before applying the wrangle using SQL-style criteria.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Values used to parameterize `where` with SQLite syntax such as `?` or `:name`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "batch", + "source_file": "wrangles-docs/wrangle-docs/utility/_sources/batch.md", + "source_sha256": "9718797a804649f5a8b385af862a13bd46e5bf7e1fcae69022b9708c60c6bdae", + "id": null, + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "required_mismatch", + "parameter": "batch_size", + "quasi_registry_required": true, + "runtime_required": false + }, + { + "code": "runtime_only_parameter", + "parameter": "timeout" + }, + { + "code": "runtime_only_parameter", + "parameter": "use_multiprocessing" + }, + { + "code": "runtime_only_parameter", + "parameter": "where" + }, + { + "code": "runtime_only_parameter", + "parameter": "where_params" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_required_mismatch", + "parameter": "batch_size", + "quasi_registry_required": true, + "embedded_schema_required": false + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "timeout" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where_params" + } + ], + "normalized_registry_differences": [ + { + "code": "required_mismatch", + "parameter": "batch_size", + "quasi_registry_required": true, + "normalized_registry_required": false + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "timeout" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "use_multiprocessing" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where_params" + } + ], + "migration_content": { + "title": "Batch", + "type": "utility", + "subtype": "", + "variant": "stock", + "status": "active (legacy documentation)", + "tags": [ + "Utility", + "batch" + ], + "parameters": [ + { + "name": "batch_size", + "required": true, + "label": "Batch Size", + "ui_type": "number", + "description": "Number of rows in each batch.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "wrangles", + "required": true, + "label": "Wrangles", + "ui_type": "json", + "description": "Wrangles to apply to each batch as a nested recipe.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "threads", + "required": false, + "label": "Threads", + "ui_type": "number", + "description": "Number of batches to run in parallel.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "on_error", + "required": false, + "label": "On Error", + "ui_type": "json", + "description": "Default output to use when an error occurs within a batch.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "classify", + "source_file": "wrangles-docs/wrangle-docs/ai/_sources/classify.md", + "source_sha256": "f64d1d921766eaf567a10e816cd616afa11e7720025afe1a6e315195c7a44171", + "id": "06669ef8-cdd1-42f7-8078-98e0b7a42c30", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Classify", + "type": "ai", + "subtype": "", + "variant": "stock", + "status": "active", + "tags": [ + "AI", + "classify" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of the input column or columns.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "list", + "description": "Name of the output column or columns.", + "allowed_values": "", + "display_default": "[\"Classify Output\"]" + }, + { + "name": "model_id", + "required": true, + "label": "Model Id", + "ui_type": "text", + "description": "ID of the classification model to be used.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "include_confidence", + "required": false, + "label": "Include Confidence", + "ui_type": "boolean", + "description": "Also return confidence for models that support it.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where`, allowing the query to be parameterized using SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "clean_whitespaces", + "source_file": "wrangles-docs/wrangle-docs/format/_sources/clean-whitespaces.md", + "source_sha256": "1ca2fa6daf8ae48dcf2a0d4f832ec1e2886a7961422ec3fa7a079358a80b9d8e", + "id": "e36e15c4-f0ad-43f8-8555-ef683a8ab892", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "if" + }, + { + "code": "runtime_only_parameter", + "parameter": "where" + }, + { + "code": "runtime_only_parameter", + "parameter": "where_params" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "if" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where_params" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "if" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where_params" + } + ], + "migration_content": { + "title": "Clean Whitespaces", + "type": "format", + "subtype": "", + "variant": "stock", + "status": "active", + "tags": [ + "Format", + "clean_whitespaces" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name or list of input columns.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "Name or list of output columns. If none given, overwrites input.", + "allowed_values": "", + "display_default": "[\"Clean Whitespaces Output\"]" + }, + { + "name": "remove_literals", + "required": false, + "label": "Remove Literals", + "ui_type": "boolean", + "description": "Whether to remove special space characters such as new lines etc. Default True.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "trim", + "required": false, + "label": "Trim", + "ui_type": "boolean", + "description": "Whether to trim leading and trailing spaces. Default True.", + "allowed_values": "", + "display_default": "false" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "compare.lists", + "source_file": "wrangles-docs/wrangle-docs/compare/_sources/lists.md", + "source_sha256": "6ac2c1bb76a66c15aac1c5ef4e3dd1784ecf13e7f11e47032e86c0abf19938b1", + "id": "a393225e-7ccf-4708-83f8-d5abd6ba9b1e", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "if" + }, + { + "code": "required_mismatch", + "parameter": "method", + "quasi_registry_required": true, + "runtime_required": false + }, + { + "code": "runtime_only_parameter", + "parameter": "where" + }, + { + "code": "runtime_only_parameter", + "parameter": "where_params" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "if" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where_params" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "if" + }, + { + "code": "required_mismatch", + "parameter": "method", + "quasi_registry_required": true, + "normalized_registry_required": false + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where_params" + } + ], + "migration_content": { + "title": "Lists", + "type": "compare", + "subtype": "lists", + "variant": "stock", + "status": "active", + "tags": [ + "Compare", + "compare", + "lists" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "List of input columns containing lists to compare", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "text", + "description": "Name of the output column", + "allowed_values": "", + "display_default": "\"Lists Output\"" + }, + { + "name": "method", + "required": true, + "label": "Method", + "ui_type": "select", + "description": "Type of comparison to perform", + "allowed_values": "intersection, difference, union", + "display_default": "\"intersection\"" + }, + { + "name": "ignore_case", + "required": false, + "label": "Ignore Case", + "ui_type": "boolean", + "description": "Ignore case when comparing string items", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "remove_duplicates", + "required": false, + "label": "Remove Duplicates", + "ui_type": "boolean", + "description": "Remove duplicates from the result", + "allowed_values": "", + "display_default": "false" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "compare.text", + "source_file": "wrangles-docs/wrangle-docs/compare/_sources/text.md", + "source_sha256": "4dd468b55f9a1dd638db6cb81d4b814ef0acd40f52f8db563b37b95cd2f8000f", + "id": "31905b74-ce58-45cd-8add-821cc04ab946", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "if" + }, + { + "code": "runtime_only_parameter", + "parameter": "metric" + }, + { + "code": "runtime_only_parameter", + "parameter": "where" + }, + { + "code": "runtime_only_parameter", + "parameter": "where_params" + } + ], + "embedded_schema_differences": [ + { + "code": "quasi_registry_only_parameter", + "parameter": "all_empty" + }, + { + "code": "quasi_registry_only_parameter", + "parameter": "case_sensitive" + }, + { + "code": "quasi_registry_only_parameter", + "parameter": "char" + }, + { + "code": "quasi_registry_only_parameter", + "parameter": "decimal_places" + }, + { + "code": "quasi_registry_only_parameter", + "parameter": "empty_a" + }, + { + "code": "quasi_registry_only_parameter", + "parameter": "empty_b" + }, + { + "code": "quasi_registry_only_parameter", + "parameter": "exact_match" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "if" + }, + { + "code": "quasi_registry_only_parameter", + "parameter": "include_ratio" + }, + { + "code": "embedded_required_mismatch", + "parameter": "method", + "quasi_registry_required": false, + "embedded_schema_required": true + }, + { + "code": "quasi_registry_only_parameter", + "parameter": "non_match_char" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where_params" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "if" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "metric" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where_params" + } + ], + "migration_content": { + "title": "Text", + "type": "compare", + "subtype": "text", + "variant": "stock", + "status": "active", + "tags": [ + "Compare", + "compare", + "text" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "The columns to compare. First column is the base column", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "text", + "description": "The column to output the results to", + "allowed_values": "", + "display_default": "\"Text Output\"" + }, + { + "name": "method", + "required": false, + "label": "Method", + "ui_type": "select", + "description": "The type of comparison to perform. Defaults to difference.", + "allowed_values": "difference, intersection, overlap", + "display_default": "\"difference\"" + }, + { + "name": "char", + "required": false, + "label": "Char", + "ui_type": "text", + "description": "Character to split strings on for difference and intersection. Defaults to a space.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "non_match_char", + "required": false, + "label": "Non Match Char", + "ui_type": "text", + "description": "Character to use for non-matching characters when using overlap.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "include_ratio", + "required": false, + "label": "Include Ratio", + "ui_type": "boolean", + "description": "Include the ratio of matching characters when using overlap.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "decimal_places", + "required": false, + "label": "Decimal Places", + "ui_type": "number", + "description": "Number of decimal places to round the overlap ratio to.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "exact_match", + "required": false, + "label": "Exact Match", + "ui_type": "text", + "description": "Value to use for exact matches when using overlap.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "empty_a", + "required": false, + "label": "Empty A", + "ui_type": "text", + "description": "Value to use when input A is empty when using overlap.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "empty_b", + "required": false, + "label": "Empty B", + "ui_type": "text", + "description": "Value to use when input B is empty when using overlap.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "all_empty", + "required": false, + "label": "All Empty", + "ui_type": "text", + "description": "Value to use when both inputs are empty when using overlap.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "case_sensitive", + "required": false, + "label": "Case Sensitive", + "ui_type": "boolean", + "description": "Whether the comparison is case sensitive. Defaults to true.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "compute.case_when", + "source_file": "wrangles-docs/wrangle-docs/compute/_sources/case-when.md", + "source_sha256": "e2728ea3ae102b126a4580844f85ba4fe716c114558efb23fd08ebc4b480f519", + "id": "9a9662e4-53d1-4932-8adf-bc3e7aa364ad", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "if" + }, + { + "code": "runtime_only_parameter", + "parameter": "where" + }, + { + "code": "runtime_only_parameter", + "parameter": "where_params" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "if" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where_params" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "if" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where_params" + } + ], + "migration_content": { + "title": "Case When", + "type": "compute", + "subtype": "case_when", + "variant": "stock", + "status": "active", + "tags": [ + "Compute", + "compute", + "case_when" + ], + "parameters": [ + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "text", + "description": "The name of the output column.", + "allowed_values": "", + "display_default": "\"Case When Output\"" + }, + { + "name": "cases", + "required": true, + "label": "Cases", + "ui_type": "list", + "description": "List of conditions and corresponding values.", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "default", + "required": false, + "label": "Default", + "ui_type": "boolean", + "description": "Value to assign if no conditions are met. Defaults to None.", + "allowed_values": "", + "display_default": "false" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "compute.score_search_results", + "source_file": "wrangles-docs/wrangle-docs/compute/_sources/score-search-results.md", + "source_sha256": "f1f641f84ebca1bc9f8324bc3992fef0c5df750c79c3e1e3dd7d27f01303e71f", + "id": "313a8ec0-cf13-4956-8d3b-5362b8641d0f", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "if" + }, + { + "code": "runtime_only_parameter", + "parameter": "where" + }, + { + "code": "runtime_only_parameter", + "parameter": "where_params" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "if" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where_params" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "if" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where_params" + } + ], + "migration_content": { + "title": "Score Search Results", + "type": "compute", + "subtype": "score_search_results", + "variant": "stock", + "status": "active", + "tags": [ + "Compute", + "compute", + "score_search_results" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "List of 3 to 5 columns -> [results, suppliers, part_codes, mpns (optional), descriptions (optional)]", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "list", + "description": "Output column for the dictionaries. If a list of 2 is provided, outputs [dicts_column, pretty_strings_column].", + "allowed_values": "", + "display_default": "[\"Score Search Results Output\"]" + }, + { + "name": "allow_mpn_exact", + "required": false, + "label": "Allow Mpn Exact", + "ui_type": "boolean", + "description": "Treat exact MPN matches as valid part code matches.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "allow_mpn_partial", + "required": false, + "label": "Allow Mpn Partial", + "ui_type": "boolean", + "description": "Treat partial MPN matches as valid part code matches.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "allow_other_exact", + "required": false, + "label": "Allow Other Exact", + "ui_type": "boolean", + "description": "Treat exact other part code matches as valid part code matches.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "allow_other_partial", + "required": false, + "label": "Allow Other Partial", + "ui_type": "boolean", + "description": "Treat partial other part code matches as valid part code matches.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "blacklist_keywords", + "required": false, + "label": "Blacklist Keywords", + "ui_type": "list", + "description": "Comma-separated list or array of keywords to filter out URLs containing them.", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "context_match_base", + "required": false, + "label": "Context Match Base", + "ui_type": "number", + "description": "", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "fuzzy_match_threshold", + "required": false, + "label": "Fuzzy Match Threshold", + "ui_type": "number", + "description": "", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "mpn_exact_score", + "required": false, + "label": "Mpn Exact Score", + "ui_type": "number", + "description": "", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "mpn_partial_base", + "required": false, + "label": "Mpn Partial Base", + "ui_type": "number", + "description": "", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "must_match_part_code", + "required": false, + "label": "Must Match Part Code", + "ui_type": "boolean", + "description": "If true, filters out results that don't satisfy the allowed match types.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "part_code_exact_score", + "required": false, + "label": "Part Code Exact Score", + "ui_type": "number", + "description": "", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "part_code_partial_base", + "required": false, + "label": "Part Code Partial Base", + "ui_type": "number", + "description": "", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "supplier_exact_score", + "required": false, + "label": "Supplier Exact Score", + "ui_type": "number", + "description": "", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "supplier_partial_base", + "required": false, + "label": "Supplier Partial Base", + "ui_type": "number", + "description": "", + "allowed_values": "", + "display_default": "\"\"" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "concurrent", + "source_file": "wrangles-docs/wrangle-docs/utility/_sources/concurrent.md", + "source_sha256": "2040a7b25fd3df372c41e853294a0da5e127f794478e2885d9abf82064e10a43", + "id": null, + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "if" + }, + { + "code": "runtime_only_parameter", + "parameter": "use_multiprocessing" + }, + { + "code": "runtime_only_parameter", + "parameter": "where" + }, + { + "code": "runtime_only_parameter", + "parameter": "where_params" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "if" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where_params" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "if" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "use_multiprocessing" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where_params" + } + ], + "migration_content": { + "title": "Concurrent", + "type": "utility", + "subtype": "", + "variant": "stock", + "status": "active (legacy documentation)", + "tags": [ + "Utility", + "concurrent" + ], + "parameters": [ + { + "name": "wrangles", + "required": true, + "label": "Wrangles", + "ui_type": "json", + "description": "Wrangles to execute concurrently.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "max_concurrency", + "required": false, + "label": "Max Concurrency", + "ui_type": "number", + "description": "Maximum number of wrangles to execute in parallel.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "convert.case", + "source_file": "wrangles-docs/wrangle-docs/convert/_sources/case.md", + "source_sha256": "bc7b946c999b342d910ecb70fbcaefb476368f2c373840b42fe0197c739aecf9", + "id": "12ff4120-3613-4801-8653-99c793477fbc", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "required_mismatch", + "parameter": "case", + "quasi_registry_required": true, + "runtime_required": false + } + ], + "embedded_schema_differences": [], + "normalized_registry_differences": [ + { + "code": "required_mismatch", + "parameter": "case", + "quasi_registry_required": true, + "normalized_registry_required": false + } + ], + "migration_content": { + "title": "Case", + "type": "convert", + "subtype": "case", + "variant": "stock", + "status": "active", + "tags": [ + "Convert", + "convert", + "case" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name or list of input columns.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "Name or list of output columns. If omitted, the input column will be overwritten.", + "allowed_values": "", + "display_default": "[\"Case Output\"]" + }, + { + "name": "case", + "required": true, + "label": "Case", + "ui_type": "select", + "description": "Case to convert to.", + "allowed_values": "lower, upper, title, sentence", + "display_default": "\"lower\"" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` for parameterized criteria. Uses SQLite syntax such as `?` or `:name`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "convert.data_type", + "source_file": "wrangles-docs/wrangle-docs/convert/_sources/data-type.md", + "source_sha256": "4c7bbc6982506c72666f5f8936ecc5043f849816a1ba55bcb2d16d6d479670c2", + "id": "52384f01-7164-404f-8615-063e7677a588", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "required_mismatch", + "parameter": "data_type", + "quasi_registry_required": true, + "runtime_required": false + } + ], + "embedded_schema_differences": [], + "normalized_registry_differences": [ + { + "code": "required_mismatch", + "parameter": "data_type", + "quasi_registry_required": true, + "normalized_registry_required": false + } + ], + "migration_content": { + "title": "Data Type", + "type": "convert", + "subtype": "data_type", + "variant": "stock", + "status": "active", + "tags": [ + "Convert", + "convert", + "data_type" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name or list of input columns.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "Name or list of output columns. If omitted, the input column will be overwritten.", + "allowed_values": "", + "display_default": "[\"Data Type Output\"]" + }, + { + "name": "data_type", + "required": true, + "label": "Data Type", + "ui_type": "select", + "description": "Data type to convert to.", + "allowed_values": "str, float, int, bool, datetime", + "display_default": "\"str\"" + }, + { + "name": "default", + "required": false, + "label": "Default", + "ui_type": "boolean", + "description": "Default output if the data cannot be converted. If omitted, invalid conversions are passed through unchanged.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` for parameterized criteria. Uses SQLite syntax such as `?` or `:name`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "convert.fraction_to_decimal", + "source_file": "wrangles-docs/wrangle-docs/convert/_sources/fraction-to-decimal.md", + "source_sha256": "5f62400f4599ca7aa3a10c4154a6713d88d08cdf949e00ba583dc7824b2160df", + "id": "7c55752e-70ab-4809-8298-c59436127457", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Fraction to Decimal", + "type": "convert", + "subtype": "fraction_to_decimal", + "variant": "stock", + "status": "active", + "tags": [ + "Convert", + "convert", + "fraction_to_decimal" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of the input column.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "Name of the output column. If omitted, the input column will be overwritten.", + "allowed_values": "", + "display_default": "[\"Fraction To Decimal Output\"]" + }, + { + "name": "decimals", + "required": false, + "label": "Decimals", + "ui_type": "number", + "description": "Number of decimal places to show after conversion. Defaults to 4.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` for parameterized criteria. Uses SQLite syntax such as `?` or `:name`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "convert.from_json", + "source_file": "wrangles-docs/wrangle-docs/convert/_sources/from-json.md", + "source_sha256": "571be73feb2f3749fed1644eb913f369c16c3e7d43838483b3c1d135ff6eef6d", + "id": "e370dfcf-b0fe-4c48-8a52-6f34c47e7978", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "From JSON", + "type": "convert", + "subtype": "from_json", + "variant": "stock", + "status": "active", + "tags": [ + "Convert", + "convert", + "from_json" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of the input column.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "Name of the output column. If omitted, the input column will be overwritten.", + "allowed_values": "", + "display_default": "[\"From Json Output\"]" + }, + { + "name": "default", + "required": false, + "label": "Default", + "ui_type": "boolean", + "description": "Value to return if the row is empty or fails to be parsed as JSON.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` for parameterized criteria. Uses SQLite syntax such as `?` or `:name`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "convert.from_yaml", + "source_file": "wrangles-docs/wrangle-docs/convert/_sources/from-yaml.md", + "source_sha256": "20204483a8d69d3428975b65a52e42fdaca9173f47caadc33bb9858ce48fad19", + "id": "b1c20004-5f80-41c2-84d2-2d4601a033b5", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "where" + }, + { + "code": "runtime_only_parameter", + "parameter": "where_params" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "where" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where_params" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "where" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where_params" + } + ], + "migration_content": { + "title": "From YAML", + "type": "convert", + "subtype": "from_yaml", + "variant": "stock", + "status": "active", + "tags": [ + "Convert", + "convert", + "from_yaml" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of the input column.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "Name of the output column. If omitted, the input column will be overwritten.", + "allowed_values": "", + "display_default": "[\"From Yaml Output\"]" + }, + { + "name": "default", + "required": false, + "label": "Default", + "ui_type": "boolean", + "description": "Value to return if the row is empty or fails to be parsed as YAML.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "convert.to_json", + "source_file": "wrangles-docs/wrangle-docs/convert/_sources/to-json.md", + "source_sha256": "2a91742970f0266435d9c36663da5ab775a65c3869be966bf1714b61f5ffc708", + "id": "94e54eb7-2b8c-4047-89d0-fb5d16baf396", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "To JSON", + "type": "convert", + "subtype": "to_json", + "variant": "stock", + "status": "active", + "tags": [ + "Convert", + "convert", + "to_json" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of the input column.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "Name of the output column. If omitted, the input column will be overwritten.", + "allowed_values": "", + "display_default": "[\"To Json Output\"]" + }, + { + "name": "indent", + "required": false, + "label": "Indent", + "ui_type": "text", + "description": "If `indent` is a non-negative integer or string, JSON arrays and objects are pretty-printed with that indentation. `None` uses the most compact representation.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "sort_keys", + "required": false, + "label": "Sort Keys", + "ui_type": "boolean", + "description": "If true, dictionary keys are sorted in the output.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "ensure_ascii", + "required": false, + "label": "Ensure Ascii", + "ui_type": "boolean", + "description": "If true, non-ASCII characters are escaped. Defaults to false.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` for parameterized criteria. Uses SQLite syntax such as `?` or `:name`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "convert.to_yaml", + "source_file": "wrangles-docs/wrangle-docs/convert/_sources/to-yaml.md", + "source_sha256": "5983c68d826f34de7de1b68f287e7c2aaa2cf8f370cdbba1bec63646c867fabd", + "id": "4cd6252f-ce47-4a9d-8272-3d87e875b72a", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "allow_unicode" + } + ], + "embedded_schema_differences": [], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "allow_unicode" + } + ], + "migration_content": { + "title": "To YAML", + "type": "convert", + "subtype": "to_yaml", + "variant": "stock", + "status": "active", + "tags": [ + "Convert", + "convert", + "to_yaml" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of the input column.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "Name of the output column. If omitted, the input column will be overwritten.", + "allowed_values": "", + "display_default": "[\"To Yaml Output\"]" + }, + { + "name": "indent", + "required": false, + "label": "Indent", + "ui_type": "number", + "description": "Number of spaces to use for nested indentation.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "sort_keys", + "required": false, + "label": "Sort Keys", + "ui_type": "boolean", + "description": "If true, dictionary keys are sorted in the output.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` for parameterized criteria. Uses SQLite syntax such as `?` or `:name`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "copy", + "source_file": "wrangles-docs/wrangle-docs/transform/_sources/copy.md", + "source_sha256": "63677a7ec6cac9954502f965bd27673c88053e1087a433dddc85ca965bb06021", + "id": "b002fbdc-92c0-4347-889d-0f4bfeec99fa", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "required_mismatch", + "parameter": "input", + "quasi_registry_required": true, + "runtime_required": false + }, + { + "code": "required_mismatch", + "parameter": "output", + "quasi_registry_required": true, + "runtime_required": false + } + ], + "embedded_schema_differences": [], + "normalized_registry_differences": [ + { + "code": "required_mismatch", + "parameter": "input", + "quasi_registry_required": true, + "normalized_registry_required": false + }, + { + "code": "required_mismatch", + "parameter": "output", + "quasi_registry_required": true, + "normalized_registry_required": false + } + ], + "migration_content": { + "title": "Copy", + "type": "transform", + "subtype": "", + "variant": "stock", + "status": "active", + "tags": [ + "Transform", + "copy" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "The column(s) to copy.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "list", + "description": "The name of the output column(s).", + "allowed_values": "", + "display_default": "[\"Copy Output\"]" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "create.bins", + "source_file": "wrangles-docs/wrangle-docs/create/_sources/bins.md", + "source_sha256": "a47db93beffad8684aad233fb6046c7c69bdb406b735b587400b9a21ee66519c", + "id": "232e3ba0-4735-4934-88aa-0163181abb3f", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Bins", + "type": "create", + "subtype": "bins", + "variant": "stock", + "status": "active", + "tags": [ + "Create", + "create", + "bins" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of input column", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "list", + "description": "Name of new column", + "allowed_values": "", + "display_default": "[\"Bins Output\"]" + }, + { + "name": "bins", + "required": true, + "label": "Bins", + "ui_type": "list", + "description": "Defines the number of equal-width bins in the range", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "labels", + "required": false, + "label": "Labels", + "ui_type": "list", + "description": "Labels for the returned bins.", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` for parameterized criteria. Uses SQLite syntax such as `?` or `:name`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "create.column", + "source_file": "wrangles-docs/wrangle-docs/create/_sources/column.md", + "source_sha256": "6ecc33faabe8977184220c2d9884ec2551e7c350bac6af546721a16f957795ec", + "id": "5a18e2c8-ec7c-45f5-88fd-bb5c358a8b40", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "coalesce_value" + }, + { + "code": "runtime_only_parameter", + "parameter": "value_if_exists" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "coalesce_value" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "value_if_exists" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "coalesce_value" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "value_if_exists" + } + ], + "migration_content": { + "title": "Column", + "type": "create", + "subtype": "column", + "variant": "stock", + "status": "active", + "tags": [ + "Create", + "create", + "column" + ], + "parameters": [ + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "list", + "description": "Name or list of names of new columns or column_name: value pairs.", + "allowed_values": "", + "display_default": "[\"Column Output\"]" + }, + { + "name": "value", + "required": false, + "label": "Value", + "ui_type": "boolean", + "description": "Value(s) to add in the new column(s). If using a dictionary in `output`, `value` can only be a string.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` for parameterized criteria. Uses SQLite syntax such as `?` or `:name`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "create.embeddings", + "source_file": "wrangles-docs/wrangle-docs/create/_sources/embeddings.md", + "source_sha256": "7668067426cbd8df83dce3995bda9b4baca6028ad46d71365aa47dd863eddb97", + "id": "e3518afd-a819-40ec-8b49-eb25690220c1", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "provider" + }, + { + "code": "runtime_only_parameter", + "parameter": "task" + }, + { + "code": "runtime_only_parameter", + "parameter": "where" + }, + { + "code": "runtime_only_parameter", + "parameter": "where_params" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "provider" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "task" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where_params" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "provider" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "task" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where_params" + } + ], + "migration_content": { + "title": "Embeddings", + "type": "create", + "subtype": "embeddings", + "variant": "stock", + "status": "active", + "tags": [ + "Create", + "create", + "embeddings" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "The column of text to create the embeddings for.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "The output column the embeddings will be saved as.", + "allowed_values": "", + "display_default": "[\"Embeddings Output\"]" + }, + { + "name": "api_key", + "required": true, + "label": "Api Key", + "ui_type": "text", + "description": "OpenAI API key.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "batch_size", + "required": false, + "label": "Batch Size", + "ui_type": "number", + "description": "The number of rows to submit per individual request.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "model", + "required": false, + "label": "Model", + "ui_type": "text", + "description": "OpenAI embedding model to use. Defaults to `text-embedding-3-small`.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "output_type", + "required": false, + "label": "Output Type", + "ui_type": "select", + "description": "Output embeddings as a numpy array or Python list. Defaults to Python list.", + "allowed_values": "numpy array, python list", + "display_default": "\"\"" + }, + { + "name": "precision", + "required": false, + "label": "Precision", + "ui_type": "select", + "description": "The precision of the embeddings. Default is float32. This should be used with output_type numpy array.", + "allowed_values": "float16, float32", + "display_default": "\"\"" + }, + { + "name": "retries", + "required": false, + "label": "Retries", + "ui_type": "number", + "description": "The number of times to retry if the request fails. This will apply exponential backoff to help with rate limiting.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "threads", + "required": false, + "label": "Threads", + "ui_type": "number", + "description": "The number of requests to submit in parallel. Each request contains the number of rows set as batch_size.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "url", + "required": false, + "label": "Url", + "ui_type": "text", + "description": "Override the default OpenAI embeddings endpoint. Must use the OpenAI embeddings API.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "create.guid", + "source_file": "wrangles-docs/wrangle-docs/create/_sources/guid.md", + "source_sha256": "086a5eea8c15dac530e46c7fe71b888480bee516e391bcd2c8111f295a9afee3", + "id": "cf3aaab2-3d5b-4c9b-826e-7af7510521c9", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "GUID", + "type": "create", + "subtype": "guid", + "variant": "stock", + "status": "active", + "tags": [ + "Create", + "create", + "guid" + ], + "parameters": [ + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "list", + "description": "Name or list of names for the new columns.", + "allowed_values": "", + "display_default": "[\"Guid Output\"]" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` for parameterized criteria. Uses SQLite syntax such as `?` or `:name`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "create.hash", + "source_file": "wrangles-docs/wrangle-docs/create/_sources/hash.md", + "source_sha256": "be37bc2161b7acb324b2eee511b00fc5ba35409de7360533a90e68bbb20fa4c1", + "id": "11e8fc13-00d2-4779-8d87-6288b07de7e7", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [ + { + "code": "embedded_required_mismatch", + "parameter": "output", + "quasi_registry_required": true, + "embedded_schema_required": false + } + ], + "normalized_registry_differences": [], + "migration_content": { + "title": "Hash", + "type": "create", + "subtype": "hash", + "variant": "stock", + "status": "active", + "tags": [ + "Create", + "create", + "hash" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of input column.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "list", + "description": "Name or list of names for the new columns.", + "allowed_values": "", + "display_default": "[\"Hash Output\"]" + }, + { + "name": "method", + "required": false, + "label": "Method", + "ui_type": "select", + "description": "Method to use to hash the input. Defaults to `md5`.", + "allowed_values": "md5, sha1, sha256, sha512", + "display_default": "\"\"" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` for parameterized criteria. Uses SQLite syntax such as `?` or `:name`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "create.index", + "source_file": "wrangles-docs/wrangle-docs/create/_sources/index.md", + "source_sha256": "2d558c435f4c092ff55cf37d03198e469ec7983460a76b1fc6f8ce9ff7063810", + "id": "0a4909ca-6e14-4da7-8a70-a7fd106d6944", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Index", + "type": "create", + "subtype": "index", + "variant": "stock", + "status": "active", + "tags": [ + "Create", + "create", + "index" + ], + "parameters": [ + { + "name": "by", + "required": false, + "label": "By", + "ui_type": "list", + "description": "Optional. Cluster the created indexes by one or more columns", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "list", + "description": "Name or list of names of new columns", + "allowed_values": "", + "display_default": "[\"Index Output\"]" + }, + { + "name": "start", + "required": false, + "label": "Start", + "ui_type": "number", + "description": "(Optional; default 1) Starting number for the index", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "step", + "required": false, + "label": "Step", + "ui_type": "number", + "description": "Step to increment from one row to the next. Defaults to 1.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` for parameterized criteria. Uses SQLite syntax such as `?` or `:name`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "create.jinja", + "source_file": "wrangles-docs/wrangle-docs/create/_sources/jinja.md", + "source_sha256": "987370829b7f4fea47804dc8ded78f84d24b765e66b7579d7812226860082d64", + "id": "10fc6709-16d4-4eab-8f56-6cb5d170ea66", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Jinja", + "type": "create", + "subtype": "jinja", + "variant": "stock", + "status": "active", + "tags": [ + "Create", + "create", + "jinja" + ], + "parameters": [ + { + "name": "input", + "required": false, + "label": "Input", + "ui_type": "text", + "description": "Name of input column containing a dictionary. Defaults to a dictionary of all columns.", + "allowed_values": "", + "display_default": "\"Column A\"" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "text", + "description": "Name of the column to output to.", + "allowed_values": "", + "display_default": "\"Jinja Output\"" + }, + { + "name": "template", + "required": true, + "label": "Template", + "ui_type": "json", + "description": "Jinja template to use. Can be represented as a YAML string, a column in the data, or a separate file.", + "allowed_values": "", + "display_default": "\"\\{\\}\"" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` for parameterized criteria. Uses SQLite syntax such as `?` or `:name`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "create.uuid", + "source_file": "wrangles-docs/wrangle-docs/create/_sources/uuid.md", + "source_sha256": "02b83afb0a86e952f6333a4aeeb34ace0de841c1604ce36921e76d0473f4cc3f", + "id": "c376f3ff-2283-4c4c-8d7f-70db6f53ed19", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "UUID", + "type": "create", + "subtype": "uuid", + "variant": "stock", + "status": "active", + "tags": [ + "Create", + "create", + "uuid" + ], + "parameters": [ + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "list", + "description": "Name or list of names for the new columns.", + "allowed_values": "", + "display_default": "[\"Uuid Output\"]" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` for parameterized criteria. Uses SQLite syntax such as `?` or `:name`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "date_calculator", + "source_file": "wrangles-docs/wrangle-docs/date/_sources/date-calculator.md", + "source_sha256": "4973c715af882052369be1559f1fd87fe418661b5edde53bd255da28f2b6a2b5", + "id": "19cfeb4f-02af-4ab2-895c-0ff2bb5cce19", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Date Calculator", + "type": "date", + "subtype": "", + "variant": "stock", + "status": "active", + "tags": [ + "Date", + "date_calculator" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "text", + "description": "Name of the dates column.", + "allowed_values": "", + "display_default": "\"Column A\"" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "text", + "description": "Name of the output column of dates.", + "allowed_values": "", + "display_default": "\"Date Calculator Output\"" + }, + { + "name": "operation", + "required": false, + "label": "Operation", + "ui_type": "select", + "description": "Date operation. Defaults to add.", + "allowed_values": "add, subtract", + "display_default": "\"\"" + }, + { + "name": "time_unit", + "required": false, + "label": "Time Unit", + "ui_type": "select", + "description": "Time unit for the operation. Defaults to none.", + "allowed_values": "years, months, weeks, days, hours, minutes, seconds, milliseconds", + "display_default": "\"\"" + }, + { + "name": "time_value", + "required": false, + "label": "Time Value", + "ui_type": "number", + "description": "Time unit value for the operation. Defaults to none.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` for parameterized criteria. Uses SQLite syntax such as `?` or `:name`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "drop", + "source_file": "wrangles-docs/wrangle-docs/select/_sources/drop.md", + "source_sha256": "eca4d43f6646f9613ebcb7422dc00901bca329d0cf2e48833d3e9268f76dcb51", + "id": "363bffbf-397e-4975-8382-e9efa5e9eed6", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Drop", + "type": "select", + "subtype": "", + "variant": "stock", + "status": "active", + "tags": [ + "Select", + "drop" + ], + "parameters": [ + { + "name": "columns", + "required": true, + "label": "Columns", + "ui_type": "list", + "description": "Name of the column(s) to drop", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "explode", + "source_file": "wrangles-docs/wrangle-docs/split/_sources/explode.md", + "source_sha256": "c5938914abed31b70d77c80add48705b6c8dc32b0a9c380d5c56558f041ac3e8", + "id": "4e4b13ac-8d50-4b2c-85c8-2c31de1e817d", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "where" + }, + { + "code": "runtime_only_parameter", + "parameter": "where_params" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "where" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where_params" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "where" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where_params" + } + ], + "migration_content": { + "title": "Explode", + "type": "split", + "subtype": "", + "variant": "stock", + "status": "active", + "tags": [ + "Split", + "explode" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of the column(s) to explode. If multiple columns are included, they must contain lists of the same length.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "drop_empty", + "required": false, + "label": "Drop Empty", + "ui_type": "boolean", + "description": "Empty lists will not produce a row in the exploded output. Default false.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "reset_index", + "required": false, + "label": "Reset Index", + "ui_type": "boolean", + "description": "Reset the index after exploding. Default false.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "extract.address", + "source_file": "wrangles-docs/wrangle-docs/extract/_sources/address.md", + "source_sha256": "95ef33fadfc5f81e9859cc48f96500c999bb44bb70ca409b5b6ecdad1fde7e6b", + "id": "44153f95-4581-4cee-898e-b3b4714045fd", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "char" + }, + { + "code": "runtime_only_parameter", + "parameter": "output_format" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "char" + }, + { + "code": "embedded_required_mismatch", + "parameter": "dataType", + "quasi_registry_required": true, + "embedded_schema_required": false + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "output_format" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "char" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "output_format" + } + ], + "migration_content": { + "title": "Address", + "type": "extract", + "subtype": "address", + "variant": "stock", + "status": "active", + "tags": [ + "Extract", + "extract", + "address" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of the input column.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "list", + "description": "Name of the output column.", + "allowed_values": "", + "display_default": "[\"Address Output\"]" + }, + { + "name": "dataType", + "required": true, + "label": "DataType", + "ui_type": "select", + "description": "Specific part of the address to extract.", + "allowed_values": "streets, cities, regions, countries", + "display_default": "\"\"" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` for parameterized criteria. Uses SQLite syntax such as `?` or `:name`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "extract.ai", + "source_file": "wrangles-docs/wrangle-docs/extract/_sources/ai.md", + "source_sha256": "921637b00ab3988fa136dcf5041ae54b2d826c324642f0294367be066c91a457", + "id": "d9f89b00-fda3-4f4c-826c-6417b9390607", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "cache" + }, + { + "code": "runtime_only_parameter", + "parameter": "cache_ttl" + }, + { + "code": "runtime_only_parameter", + "parameter": "char" + }, + { + "code": "runtime_only_parameter", + "parameter": "deadline" + }, + { + "code": "runtime_only_parameter", + "parameter": "instructions" + }, + { + "code": "quasi_registry_only_parameter", + "parameter": "messages" + }, + { + "code": "required_mismatch", + "parameter": "output", + "quasi_registry_required": true, + "runtime_required": false + }, + { + "code": "runtime_only_parameter", + "parameter": "output_format" + }, + { + "code": "runtime_only_parameter", + "parameter": "protocol" + }, + { + "code": "runtime_only_parameter", + "parameter": "provider" + }, + { + "code": "runtime_only_parameter", + "parameter": "reasoning" + }, + { + "code": "runtime_only_parameter", + "parameter": "record_examples" + }, + { + "code": "runtime_only_parameter", + "parameter": "store" + }, + { + "code": "runtime_only_parameter", + "parameter": "verbosity" + }, + { + "code": "runtime_only_parameter", + "parameter": "web_search" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "cache" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "cache_ttl" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "char" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "deadline" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "instructions" + }, + { + "code": "quasi_registry_only_parameter", + "parameter": "messages" + }, + { + "code": "embedded_required_mismatch", + "parameter": "output", + "quasi_registry_required": true, + "embedded_schema_required": false + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "output_format" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "protocol" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "provider" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "reasoning" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "record_examples" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "store" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "verbosity" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "web_search" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "cache" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "cache_ttl" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "char" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "deadline" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "instructions" + }, + { + "code": "quasi_registry_only_parameter", + "parameter": "messages" + }, + { + "code": "required_mismatch", + "parameter": "output", + "quasi_registry_required": true, + "normalized_registry_required": false + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "output_format" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "protocol" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "provider" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "reasoning" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "record_examples" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "store" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "verbosity" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "web_search" + } + ], + "migration_content": { + "title": "AI", + "type": "ai", + "subtype": "ai", + "variant": "stock", + "status": "active", + "tags": [ + "AI", + "extract", + "ai" + ], + "parameters": [ + { + "name": "input", + "required": false, + "label": "Input", + "ui_type": "list", + "description": "Name or list of input columns. Defaults to the entire dataframe.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "json", + "description": "List and description of the output you want.", + "allowed_values": "", + "display_default": "\"{}\"" + }, + { + "name": "api_key", + "required": true, + "label": "Api Key", + "ui_type": "text", + "description": "OpenAI API key for the model.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "model", + "required": false, + "label": "Model", + "ui_type": "text", + "description": "Model name, such as `gpt-4o-mini`.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "model_id", + "required": false, + "label": "Model Id", + "ui_type": "text", + "description": "Saved extract.ai model ID containing a trained definition.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "messages", + "required": false, + "label": "Messages", + "ui_type": "list", + "description": "Optional additional instructions for the AI.", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "threads", + "required": false, + "label": "Threads", + "ui_type": "number", + "description": "Number of requests to send in parallel.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "timeout", + "required": false, + "label": "Timeout", + "ui_type": "number", + "description": "Seconds to wait for a response before timing out.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "retries", + "required": false, + "label": "Retries", + "ui_type": "number", + "description": "Number of retry attempts. Applies exponential backoff for rate limiting.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "url", + "required": false, + "label": "Url", + "ui_type": "text", + "description": "Override the default AI endpoint. Must use the OpenAI chat completions API.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "strict", + "required": false, + "label": "Strict", + "ui_type": "boolean", + "description": "Enable strict mode. If true, the function must match the schema but may be more limited.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` for parameterized criteria. Uses SQLite syntax such as `?` or `:name`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "extract.attributes", + "source_file": "wrangles-docs/wrangle-docs/extract/_sources/attributes.md", + "source_sha256": "2639ed1bc2d659031cdd9d24ef6592517eb4f186eee082d001e11f8e21c5d365", + "id": "03ccedef-c938-41f1-8980-280f1a91542e", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "char" + }, + { + "code": "runtime_only_parameter", + "parameter": "output_format" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "char" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "output_format" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "char" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "output_format" + } + ], + "migration_content": { + "title": "Attributes", + "type": "extract", + "subtype": "attributes", + "variant": "stock", + "status": "active", + "tags": [ + "Extract", + "extract", + "attributes" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of the input column.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "list", + "description": "Name of the output column.", + "allowed_values": "", + "display_default": "[\"Attributes Output\"]" + }, + { + "name": "attribute_type", + "required": false, + "label": "Attribute Type", + "ui_type": "select", + "description": "Specify which attributes to return. If omitted, returns all attributes.", + "allowed_values": "angle, area, capacitance, charge, current, data transfer rate, electrical conductance, electrical resistance, energy, force, frequency, inductance, instance frequency, length, luminous flux, weight, power, pressure, speed, velocity, temperature, time, voltage, volume, volumetric flow", + "display_default": "\"\"" + }, + { + "name": "bound", + "required": false, + "label": "Bound", + "ui_type": "select", + "description": "When returning an object, if the input is a range (e.g. 10-20mm) set the value to return. min, mid or max. Default mid.", + "allowed_values": "min, mid, max", + "display_default": "\"\"" + }, + { + "name": "desired_unit", + "required": false, + "label": "Desired Unit", + "ui_type": "text", + "description": "Convert the extracted unit to the desired unit", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "first_element", + "required": false, + "label": "First Element", + "ui_type": "boolean", + "description": "Get the first element from results", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "responseContent", + "required": false, + "label": "ResponseContent", + "ui_type": "select", + "description": "`span` returns the text found. `object` returns an object with value and unit.", + "allowed_values": "span, object", + "display_default": "\"\"" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` for parameterized criteria. Uses SQLite syntax such as `?` or `:name`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "extract.brackets", + "source_file": "wrangles-docs/wrangle-docs/extract/_sources/brackets.md", + "source_sha256": "3ac79b130729f241c48cc4128517558d2aa1b279e2bb90fe83729a86b082c766", + "id": "9b4c15fa-2aaa-40c8-8834-6e835760bee5", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "char" + }, + { + "code": "quasi_registry_only_parameter", + "parameter": "first_element" + }, + { + "code": "runtime_only_parameter", + "parameter": "output_format" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "char" + }, + { + "code": "quasi_registry_only_parameter", + "parameter": "first_element" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "output_format" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "char" + }, + { + "code": "quasi_registry_only_parameter", + "parameter": "first_element" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "output_format" + } + ], + "migration_content": { + "title": "Brackets", + "type": "extract", + "subtype": "brackets", + "variant": "stock", + "status": "active", + "tags": [ + "Extract", + "extract", + "brackets" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of the input column", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "list", + "description": "Name of the output columns", + "allowed_values": "", + "display_default": "[\"Brackets Output\"]" + }, + { + "name": "find", + "required": false, + "label": "Find", + "ui_type": "list", + "description": "(Optional) The type of brackets to find (round '()', square '[]', curly '\\{\\}', angled '<>'). Default is all brackets.", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "first_element", + "required": false, + "label": "First Element", + "ui_type": "boolean", + "description": "Get the first element from results. Defaults to false.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "include_brackets", + "required": false, + "label": "Include Brackets", + "ui_type": "boolean", + "description": "Include the brackets in the output.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` for parameterized criteria. Uses SQLite syntax such as `?` or `:name`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "extract.codes", + "source_file": "wrangles-docs/wrangle-docs/extract/_sources/codes.md", + "source_sha256": "419de8ef4cb8eae00b0a1d342ddb02c3d74f260142fb256257b8080e63021795", + "id": "da591387-0fca-4842-8bcb-d19f561f0292", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "char" + }, + { + "code": "runtime_only_parameter", + "parameter": "extract_raw" + }, + { + "code": "runtime_only_parameter", + "parameter": "output_format" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "char" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "extract_raw" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "output_format" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "char" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "extract_raw" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "output_format" + } + ], + "migration_content": { + "title": "Codes", + "type": "extract", + "subtype": "codes", + "variant": "stock", + "status": "active", + "tags": [ + "Extract", + "extract", + "codes" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name or list of input columns.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "list", + "description": "Name or list of output columns", + "allowed_values": "", + "display_default": "[\"Codes Output\"]" + }, + { + "name": "disallowed_patterns", + "required": false, + "label": "Disallowed Patterns", + "ui_type": "text", + "description": "A pattern or JSON array of regex patterns to not include in the found codes", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "first_element", + "required": false, + "label": "First Element", + "ui_type": "boolean", + "description": "Get the first element from results", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "include_multi_part_tokens", + "required": false, + "label": "Include Multi Part Tokens", + "ui_type": "boolean", + "description": "Whether to include multi-part tokens that have a space. Default True.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "max_length", + "required": false, + "label": "Max Length", + "ui_type": "text", + "description": "Maximum length of allowed results.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "min_length", + "required": false, + "label": "Min Length", + "ui_type": "text", + "description": "Minimum length of allowed results.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "sort_order", + "required": false, + "label": "Sort Order", + "ui_type": "select", + "description": "Default is as found in the input. Also allows longest or shortest.", + "allowed_values": "longest, shortest", + "display_default": "\"\"" + }, + { + "name": "strategy", + "required": false, + "label": "Strategy", + "ui_type": "select", + "description": "How aggressive to be at removing false positives such as measurements.", + "allowed_values": "lenient, balanced, strict", + "display_default": "\"\"" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` for parameterized criteria. Uses SQLite syntax such as `?` or `:name`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "extract.custom", + "source_file": "wrangles-docs/wrangle-docs/extract/_sources/custom.md", + "source_sha256": "e5b65421e341c62011f25dba465bf5940a30cabb9d2183d7661fa1c2de56872a", + "id": "e8e96b76-86bf-41dc-8d16-825dcff9688b", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "char" + }, + { + "code": "runtime_only_parameter", + "parameter": "include_empty_labels" + }, + { + "code": "runtime_only_parameter", + "parameter": "output_format" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "char" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "include_empty_labels" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "output_format" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "char" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "include_empty_labels" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "output_format" + } + ], + "migration_content": { + "title": "Custom", + "type": "extract", + "subtype": "custom", + "variant": "stock", + "status": "active", + "tags": [ + "Extract", + "extract", + "custom" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name or list of input columns.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "Name or list of output columns", + "allowed_values": "", + "display_default": "[\"Custom Output\"]" + }, + { + "name": "model_id", + "required": true, + "label": "Model Id", + "ui_type": "list", + "description": "Model ID of the custom Extract Wrangle being used.", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "case_sensitive", + "required": false, + "label": "Case Sensitive", + "ui_type": "boolean", + "description": "Allows the wrangle to be case sensitive if set to True, default is False.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "extract_raw", + "required": false, + "label": "Extract Raw", + "ui_type": "boolean", + "description": "Extract the raw data from the wrangle", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "first_element", + "required": false, + "label": "First Element", + "ui_type": "boolean", + "description": "Get the first element from results", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "sort", + "required": false, + "label": "Sort", + "ui_type": "select", + "description": "Sort the results", + "allowed_values": "training_order, input_order, longest, shortest, alphabetical, reverse_alphabetical, ascending, descending", + "display_default": "\"\"" + }, + { + "name": "use_labels", + "required": false, + "label": "Use Labels", + "ui_type": "boolean", + "description": "Use Labels in the extract output \\{label: value\\}", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "use_spellcheck", + "required": false, + "label": "Use Spellcheck", + "ui_type": "boolean", + "description": "Use spellcheck to correct spelling mistakes in the input.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` for parameterized criteria. Uses SQLite syntax such as `?` or `:name`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "extract.date_properties", + "source_file": "wrangles-docs/wrangle-docs/extract/_sources/date-properties.md", + "source_sha256": "0c97941ec4633b7ab9d888b5d11fc6bb40cb3a3416967f6fd39645163d36413a", + "id": "a346de62-93cd-44ba-8d30-a6305629c6d7", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Date Properties", + "type": "extract", + "subtype": "date_properties", + "variant": "stock", + "status": "active", + "tags": [ + "Extract", + "extract", + "date_properties" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of the input column", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "Name of the output columns", + "allowed_values": "", + "display_default": "[\"Date Properties Output\"]" + }, + { + "name": "property", + "required": true, + "label": "Property", + "ui_type": "select", + "description": "Property to extract from date", + "allowed_values": "day, day_of_year, month, month_name, weekday, week_day_name, week_year, quarter", + "display_default": "\"day\"" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` for parameterized criteria. Uses SQLite syntax such as `?` or `:name`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "extract.date_range", + "source_file": "wrangles-docs/wrangle-docs/extract/_sources/date-range.md", + "source_sha256": "eea498bee1731b6669fa5e94ce72ff72d8369926b040890b3962b2a4d270f0e6", + "id": "9cebfa6f-a524-4aec-84a7-02d77b792843", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [ + { + "code": "embedded_required_mismatch", + "parameter": "range", + "quasi_registry_required": false, + "embedded_schema_required": true + } + ], + "normalized_registry_differences": [], + "migration_content": { + "title": "Date Range", + "type": "extract", + "subtype": "date_range", + "variant": "stock", + "status": "active", + "tags": [ + "Extract", + "extract", + "date_range" + ], + "parameters": [ + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "text", + "description": "Name of the output column", + "allowed_values": "", + "display_default": "\"Date Range Output\"" + }, + { + "name": "end_time", + "required": true, + "label": "End Time", + "ui_type": "text", + "description": "Name of the end date column", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "range", + "required": false, + "label": "Range", + "ui_type": "select", + "description": "Type of frequency to count. Defaults to day.", + "allowed_values": "business days, days, weeks, months, semi months, business month ends, month starts, semi month starts, business month starts, quarters, quarter starts, years, business hours, hours, minutes, seconds, milliseconds", + "display_default": "\"business days\"" + }, + { + "name": "start_time", + "required": true, + "label": "Start Time", + "ui_type": "text", + "description": "Name of the start date column", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` for parameterized criteria. Uses SQLite syntax such as `?` or `:name`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "extract.html", + "source_file": "wrangles-docs/wrangle-docs/extract/_sources/html.md", + "source_sha256": "68088607f97ee2788b07fccdd4f13d36106973b284da13c960b24f55e9fafd1a", + "id": "728fc87a-a20d-4efa-833a-612e0b5eadc3", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "char" + }, + { + "code": "quasi_registry_only_parameter", + "parameter": "first_element" + }, + { + "code": "required_mismatch", + "parameter": "output", + "quasi_registry_required": true, + "runtime_required": false + }, + { + "code": "runtime_only_parameter", + "parameter": "output_format" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "char" + }, + { + "code": "quasi_registry_only_parameter", + "parameter": "first_element" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "output_format" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "char" + }, + { + "code": "quasi_registry_only_parameter", + "parameter": "first_element" + }, + { + "code": "required_mismatch", + "parameter": "output", + "quasi_registry_required": true, + "normalized_registry_required": false + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "output_format" + } + ], + "migration_content": { + "title": "HTML", + "type": "extract", + "subtype": "html", + "variant": "stock", + "status": "active", + "tags": [ + "Extract", + "extract", + "html" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name or list of input columns.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "list", + "description": "Name or list of output columns", + "allowed_values": "", + "display_default": "[\"Html Output\"]" + }, + { + "name": "data_type", + "required": true, + "label": "Data Type", + "ui_type": "select", + "description": "The type of data to extract", + "allowed_values": "text, links", + "display_default": "\"text\"" + }, + { + "name": "first_element", + "required": false, + "label": "First Element", + "ui_type": "boolean", + "description": "Get the first element from results", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` for parameterized criteria. Uses SQLite syntax such as `?` or `:name`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "extract.properties", + "source_file": "wrangles-docs/wrangle-docs/extract/_sources/properties.md", + "source_sha256": "892f77ef477a1b1cac4bba69d2fe5c95c0c6000e8820285b646fed9aa9ff16f1", + "id": "23bbdb86-fd13-4b78-8fff-a7a76769ab63", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "char" + }, + { + "code": "runtime_only_parameter", + "parameter": "output_format" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "char" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "output_format" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "char" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "output_format" + } + ], + "migration_content": { + "title": "Properties", + "type": "extract", + "subtype": "properties", + "variant": "stock", + "status": "active", + "tags": [ + "Extract", + "extract", + "properties" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of the input column", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "list", + "description": "Name of the output columns", + "allowed_values": "", + "display_default": "[\"Properties Output\"]" + }, + { + "name": "first_element", + "required": false, + "label": "First Element", + "ui_type": "boolean", + "description": "Get the first element from results", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "property_type", + "required": false, + "label": "Property Type", + "ui_type": "select", + "description": "Specific type of properties to extract. If omitted, returns all properties.", + "allowed_values": "Colours, Materials, Shapes, Standards", + "display_default": "\"\"" + }, + { + "name": "return_data_type", + "required": false, + "label": "Return Data Type", + "ui_type": "select", + "description": "The format to return the data, as a list or as a string", + "allowed_values": "list, string", + "display_default": "\"\"" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` for parameterized criteria. Uses SQLite syntax such as `?` or `:name`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "extract.regex", + "source_file": "wrangles-docs/wrangle-docs/extract/_sources/regex.md", + "source_sha256": "ba84635726576550a5db6b2ba1bdac6736e632438b8ac0f46f95adabb9ca699e", + "id": "9aa0253a-4b70-4737-832c-964e15967289", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "char" + }, + { + "code": "runtime_only_parameter", + "parameter": "output_format" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "char" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "output_format" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "char" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "output_format" + } + ], + "migration_content": { + "title": "Regex", + "type": "extract", + "subtype": "regex", + "variant": "stock", + "status": "active", + "tags": [ + "Extract", + "extract", + "regex" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of the input column(s).", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "list", + "description": "Name of the output column(s).", + "allowed_values": "", + "display_default": "[\"Regex Output\"]" + }, + { + "name": "find", + "required": true, + "label": "Find", + "ui_type": "text", + "description": "Pattern to find using regex", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "first_element", + "required": false, + "label": "First Element", + "ui_type": "boolean", + "description": "Get the first element from results", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "output_pattern", + "required": false, + "label": "Output Pattern", + "ui_type": "text", + "description": "Format for output matches and capture groups using backreferences such as `\\1` or `\\2`. Defaults to entire matches.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` for parameterized criteria. Uses SQLite syntax such as `?` or `:name`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "filter", + "source_file": "wrangles-docs/wrangle-docs/select/_sources/filter.md", + "source_sha256": "9610078dce7f60f51d20fe684c0a95fe60f53e3bcb913628e1faac6bb44355a0", + "id": "e3242acf-d204-433f-8373-205b77481131", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Filter", + "type": "select", + "subtype": "", + "variant": "stock", + "status": "active", + "tags": [ + "Select", + "filter" + ], + "parameters": [ + { + "name": "input", + "required": false, + "label": "Input", + "ui_type": "list", + "description": "Name of the column to filter on.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "between", + "required": false, + "label": "Between", + "ui_type": "list", + "description": "Value or list of values to filter that are in between two parameter values", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "contains", + "required": false, + "label": "Contains", + "ui_type": "text", + "description": "Select rows where the input contains the value. Allows regular expressions.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "equal", + "required": false, + "label": "Equal", + "ui_type": "boolean", + "description": "Select rows where the values equal a given value.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "greater_than", + "required": false, + "label": "Greater Than", + "ui_type": "number", + "description": "Select rows where the values are greater than a specified value. Does include the value itself.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "greater_than_equal_to", + "required": false, + "label": "Greater Than Equal To", + "ui_type": "number", + "description": "Select rows where the values are greater than a specified value. Does include the value itself.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "is_in", + "required": false, + "label": "Is In", + "ui_type": "list", + "description": "Select rows where the values are in a given list.", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "is_null", + "required": false, + "label": "Is Null", + "ui_type": "boolean", + "description": "If true, select all rows where the value is NULL. If false, where is not NULL.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "less_than", + "required": false, + "label": "Less Than", + "ui_type": "number", + "description": "Select rows where the values are less than a specified value. Does not include the value itself.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "less_than_equal_to", + "required": false, + "label": "Less Than Equal To", + "ui_type": "number", + "description": "Select rows where the values are less than a specified value. Does include the value itself.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "not_contains", + "required": false, + "label": "Not Contains", + "ui_type": "text", + "description": "Select rows where the input does not contain the value. Allows regular expressions.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "not_equal", + "required": false, + "label": "Not Equal", + "ui_type": "boolean", + "description": "Select rows where the values do not equal a given value.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "not_in", + "required": false, + "label": "Not In", + "ui_type": "list", + "description": "Select rows where the values are not in a given list.", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Use a SQL `WHERE` clause to filter the data. `input` must be used if `where` is not provided. Prefer using `where` independently of all other parameters except `where_params`.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "format.dates", + "source_file": "wrangles-docs/wrangle-docs/format/_sources/dates.md", + "source_sha256": "4995847262ff4d6a152168bf22d6ec05c547ca3e656bac83d9d4d7b1722a4504", + "id": "a3c15135-4f7a-4659-83fd-f657afa603c9", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Dates", + "type": "format", + "subtype": "dates", + "variant": "stock", + "status": "active", + "tags": [ + "Format", + "format", + "dates" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of the input column.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "If none given, overwrites input.", + "allowed_values": "", + "display_default": "[\"Dates Output\"]" + }, + { + "name": "format", + "required": true, + "label": "Format", + "ui_type": "text", + "description": "String pattern to format date", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "format.pad", + "source_file": "wrangles-docs/wrangle-docs/format/_sources/pad.md", + "source_sha256": "d3933be6c735f348e0ec31766d85a553402c8f6331be4305dca749169267ced2", + "id": "76c19378-38f4-45aa-85d1-3cdf8f8aae29", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Pad", + "type": "format", + "subtype": "pad", + "variant": "stock", + "status": "active", + "tags": [ + "Format", + "format", + "pad" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of the input column.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "If none given, overwrites input.", + "allowed_values": "", + "display_default": "[\"Pad Output\"]" + }, + { + "name": "char", + "required": true, + "label": "Char", + "ui_type": "text", + "description": "The character to pad the input with", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "pad_length", + "required": true, + "label": "Pad Length", + "ui_type": "number", + "description": "Length for the output", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "side", + "required": true, + "label": "Side", + "ui_type": "text", + "description": "Side from which to fill resulting string.", + "allowed_values": "left, right, both", + "display_default": "\"\"" + }, + { + "name": "skip_empty", + "required": false, + "label": "Skip Empty", + "ui_type": "boolean", + "description": "Whether to skip empty values, defaults to false.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "format.prefix", + "source_file": "wrangles-docs/wrangle-docs/format/_sources/prefix.md", + "source_sha256": "aad7d1fe3312c08ad0b36b6a915339632bfdc762e24249d6dc6ac1beff1f06fb", + "id": "c12f99b9-2363-4da7-8405-7c73b87906e5", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Prefix", + "type": "format", + "subtype": "prefix", + "variant": "stock", + "status": "active", + "tags": [ + "Format", + "format", + "prefix" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of the input column.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "If none given, overwrites input.", + "allowed_values": "", + "display_default": "[\"Prefix Output\"]" + }, + { + "name": "value", + "required": true, + "label": "Value", + "ui_type": "text", + "description": "Prefix value to add", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "skip_empty", + "required": false, + "label": "Skip Empty", + "ui_type": "boolean", + "description": "Whether to skip empty values, defaults to false.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "format.remove_duplicates", + "source_file": "wrangles-docs/wrangle-docs/format/_sources/remove-duplicates.md", + "source_sha256": "0554c47789541c0c8b3a521958ea6b05c806c51570acf5bd5f8f3781e0250172", + "id": "283b9e78-b2b2-43d0-844f-9842c33120aa", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Remove Duplicates", + "type": "format", + "subtype": "remove_duplicates", + "variant": "stock", + "status": "active", + "tags": [ + "Format", + "format", + "remove_duplicates" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of the input column.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "If none given, overwrites input.", + "allowed_values": "", + "display_default": "[\"Remove Duplicates Output\"]" + }, + { + "name": "ignore_case", + "required": false, + "label": "Ignore Case", + "ui_type": "boolean", + "description": "Ignore case when removing duplicates.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "format.significant_figures", + "source_file": "wrangles-docs/wrangle-docs/format/_sources/significant-figures.md", + "source_sha256": "9fa5ee5d6698ee7f593308d70995454ca263965f721031d8153582b55c61aee3", + "id": "a359f72a-5250-4dd8-84f6-8a8173bee0f6", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Significant Figures", + "type": "format", + "subtype": "significant_figures", + "variant": "stock", + "status": "active", + "tags": [ + "Format", + "format", + "significant_figures" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of the input column.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "Name of the output column. If none given, overwrites input.", + "allowed_values": "", + "display_default": "[\"Significant Figures Output\"]" + }, + { + "name": "significant_figures", + "required": false, + "label": "Significant Figures", + "ui_type": "number", + "description": "Number of significant figures to format to. Default is 3.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "format.suffix", + "source_file": "wrangles-docs/wrangle-docs/format/_sources/suffix.md", + "source_sha256": "d36f94db7faf3c98b52440978ae72b3704c989fee332748db6653a8c408b18db", + "id": "8d127060-ba2d-4934-897f-07662e01e40b", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Suffix", + "type": "format", + "subtype": "suffix", + "variant": "stock", + "status": "active", + "tags": [ + "Format", + "format", + "suffix" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of the input column.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "If none given, overwrites input.", + "allowed_values": "", + "display_default": "[\"Suffix Output\"]" + }, + { + "name": "value", + "required": true, + "label": "Value", + "ui_type": "text", + "description": "Suffix value to add", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "skip_empty", + "required": false, + "label": "Skip Empty", + "ui_type": "boolean", + "description": "Whether to skip empty values, defaults to false.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "format.trim", + "source_file": "wrangles-docs/wrangle-docs/format/_sources/trim.md", + "source_sha256": "d5305ff23763b702934a8a92bd5db0f4d000923e56c5c57d3fc9df5ad8f56e36", + "id": "af16b3c1-c230-4868-8ebe-f574904a0c76", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Trim", + "type": "format", + "subtype": "trim", + "variant": "stock", + "status": "active", + "tags": [ + "Format", + "format", + "trim" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of the input column.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "If none given, overwrites input.", + "allowed_values": "", + "display_default": "[\"Trim Output\"]" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "generate.ai", + "source_file": "wrangles-docs/wrangle-docs/ai/_sources/ai.md", + "source_sha256": "c5582c2d0094f865f651d04b2685a6292ddd2f97cd7888c36f12a221dd195a88", + "id": "12c31c6c-cade-484d-84ba-7f302bf6af52", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "if" + }, + { + "code": "runtime_only_parameter", + "parameter": "where" + }, + { + "code": "runtime_only_parameter", + "parameter": "where_params" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "if" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where_params" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "if" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where_params" + } + ], + "migration_content": { + "title": "Ai", + "type": "ai", + "subtype": "ai", + "variant": "stock", + "status": "active", + "tags": [ + "AI", + "generate", + "ai" + ], + "parameters": [ + { + "name": "input", + "required": false, + "label": "Input", + "ui_type": "list", + "description": "Column(s) to concatenate into the prompt (defaults to all columns).", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "json", + "description": "Target schema; string/array shorthands are expanded automatically.", + "allowed_values": "", + "display_default": "\"\\{\\}\"" + }, + { + "name": "api_key", + "required": true, + "label": "Api Key", + "ui_type": "text", + "description": "OpenAI-compatible API key.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "messages", + "required": false, + "label": "Messages", + "ui_type": "list", + "description": "Optional extra messages forwarded to the inner generate helper.", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "model", + "required": false, + "label": "Model", + "ui_type": "text", + "description": "Responses model name (e.g. gpt-5-mini).", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "previous_response", + "required": false, + "label": "Previous Response", + "ui_type": "boolean", + "description": "Chain responses by reusing previous_response_id for field-by-field calls.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "reasoning", + "required": false, + "label": "Reasoning", + "ui_type": "json", + "description": "Responses API reasoning options (forwarded verbatim).", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "retries", + "required": false, + "label": "Retries", + "ui_type": "number", + "description": "Number of retry attempts on failure.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "strict", + "required": false, + "label": "Strict", + "ui_type": "boolean", + "description": "Enforce JSON-schema validation on the response.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "summary", + "required": false, + "label": "Summary", + "ui_type": "boolean", + "description": "Request summary text to be merged into the output.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "threads", + "required": false, + "label": "Threads", + "ui_type": "number", + "description": "Maximum concurrent requests (default 20).", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "timeout", + "required": false, + "label": "Timeout", + "ui_type": "number", + "description": "Per-request timeout in seconds.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "url", + "required": false, + "label": "Url", + "ui_type": "text", + "description": "Override for the OpenAI-compatible endpoint.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "web_search", + "required": false, + "label": "Web Search", + "ui_type": "boolean", + "description": "Enable DuckDuckGo context lookup per row.", + "allowed_values": "", + "display_default": "false" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "huggingface", + "source_file": "wrangles-docs/wrangle-docs/ai/_sources/huggingface.md", + "source_sha256": "1dd791f58fe24bdb5b1cec8cce1118803a7dd5cfd4cac1657f291ffde544d3e0", + "id": "ae12cf20-4934-428f-84a9-a6898cb7ffe0", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "if" + }, + { + "code": "runtime_only_parameter", + "parameter": "where" + }, + { + "code": "runtime_only_parameter", + "parameter": "where_params" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "if" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where_params" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "if" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where_params" + } + ], + "migration_content": { + "title": "Huggingface", + "type": "ai", + "subtype": "", + "variant": "stock", + "status": "active", + "tags": [ + "AI", + "huggingface" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of the input column.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "Name of the output column. If not provided, will overwrite the input column", + "allowed_values": "", + "display_default": "[\"Huggingface Output\"]" + }, + { + "name": "api_token", + "required": true, + "label": "Api Token", + "ui_type": "text", + "description": "Huggingface API Token", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "model", + "required": true, + "label": "Model", + "ui_type": "text", + "description": "Name of the model to use. e.g. facebook/bart-large-cnn", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "parameters", + "required": false, + "label": "Parameters", + "ui_type": "json", + "description": "Optionally, provide additional parameters to define the model behaviour", + "allowed_values": "", + "display_default": "\"\"" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "log", + "source_file": "wrangles-docs/wrangle-docs/utility/_sources/log.md", + "source_sha256": "91535f1982515e1bd06ed3959f0a32b06427476664f69b074a13b0174befb642", + "id": "6177808e-aa2d-4d0b-8385-858b16948a5d", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Log", + "type": "utility", + "subtype": "", + "variant": "stock", + "status": "active", + "tags": [ + "Utility", + "log" + ], + "parameters": [ + { + "name": "columns", + "required": false, + "label": "Columns", + "ui_type": "list", + "description": "List of specific columns to log. Defaults to all columns.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "write", + "required": false, + "label": "Write", + "ui_type": "list", + "description": "Allows an intermediate output to a file, dataframe, database, etc.", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "error", + "required": false, + "label": "Error", + "ui_type": "text", + "description": "Log an error to the console.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "warning", + "required": false, + "label": "Warning", + "ui_type": "text", + "description": "Log a warning to the console.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "info", + "required": false, + "label": "Info", + "ui_type": "text", + "description": "Log info to the console.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "log_data", + "required": false, + "label": "Log Data", + "ui_type": "boolean", + "description": "Whether to log a sample of the dataframe contents. Default true.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "lookup", + "source_file": "wrangles-docs/wrangle-docs/lookup/_sources/lookup.md", + "source_sha256": "8a3818be1e605871a53b8e9ec60649f5fb9c0c18496c8d920021f05893e4aa2e", + "id": "b3339193-d1cc-4c89-8ed6-901efa6d81be", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "required_mismatch", + "parameter": "model_id", + "quasi_registry_required": true, + "runtime_required": false + }, + { + "code": "runtime_only_parameter", + "parameter": "n" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "n" + } + ], + "normalized_registry_differences": [ + { + "code": "required_mismatch", + "parameter": "model_id", + "quasi_registry_required": true, + "normalized_registry_required": false + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "n" + } + ], + "migration_content": { + "title": "Lookup", + "type": "lookup", + "subtype": "", + "variant": "stock", + "status": "active", + "tags": [ + "Lookup", + "lookup" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "text", + "description": "The input column that contains the keys to be looked up in the Lookup Wrangle.", + "allowed_values": "", + "display_default": "\"Column A\"" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "Output columns from the Lookup Wrangle. If not present, a dictionary with output values is returned.", + "allowed_values": "", + "display_default": "[\"Lookup Output\"]" + }, + { + "name": "model_id", + "required": true, + "label": "Model Id", + "ui_type": "text", + "description": "ID of the lookup model to be used.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "lookup_mode", + "required": false, + "label": "Lookup Mode", + "ui_type": "select", + "description": "How to perform lookups. `by_row` (default): lookup each row individually. `by_dataframe`: lookup unique values once, copy results to all rows. `by_matrix`: lookup once per matrix permutation.", + "allowed_values": "by_row, by_matrix, by_dataframe", + "display_default": "\"\"" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "math", + "source_file": "wrangles-docs/wrangle-docs/compute/_sources/math.md", + "source_sha256": "9199275d740fc7ffe5332d18264712b3ffd932a5cd965b6f2f7da177390b02f8", + "id": "494b11ad-00c1-4748-8b93-6bec982f4fec", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Math", + "type": "compute", + "subtype": "", + "variant": "stock", + "status": "active", + "tags": [ + "Compute", + "math" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "text", + "description": "Mathematical expression using column names, e.g. `column1 * column2 + column3`.", + "allowed_values": "", + "display_default": "\"Column A\"" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "text", + "description": "Column to output the results to.", + "allowed_values": "", + "display_default": "\"Math Output\"" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` for parameterized criteria. Uses SQLite syntax such as `?` or `:name`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "matrix", + "source_file": "wrangles-docs/wrangle-docs/utility/_sources/matrix.md", + "source_sha256": "c03e133391dbd08e304f014385185a594e076c1050180daf850d5ecf59578a5e", + "id": null, + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "quasi_registry_only_parameter", + "parameter": "functions" + }, + { + "code": "runtime_only_parameter", + "parameter": "where" + }, + { + "code": "runtime_only_parameter", + "parameter": "where_params" + } + ], + "embedded_schema_differences": [ + { + "code": "quasi_registry_only_parameter", + "parameter": "functions" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where_params" + } + ], + "normalized_registry_differences": [ + { + "code": "quasi_registry_only_parameter", + "parameter": "functions" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where_params" + } + ], + "migration_content": { + "title": "Matrix", + "type": "utility", + "subtype": "", + "variant": "stock", + "status": "active (legacy documentation)", + "tags": [ + "Utility", + "matrix" + ], + "parameters": [ + { + "name": "variables", + "required": true, + "label": "Variables", + "ui_type": "json", + "description": "Variable names and the values passed to nested wrangles.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "wrangles", + "required": true, + "label": "Wrangles", + "ui_type": "json", + "description": "Wrangles to run for each variable combination.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "functions", + "required": false, + "label": "Functions", + "ui_type": "json", + "description": "User-defined custom functions available to nested wrangles.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "strategy", + "required": false, + "label": "Strategy", + "ui_type": "select", + "description": "How multiple variables are combined. `loop` repeats shorter lists until the longest completes; `permutations` uses every combination.", + "allowed_values": "loop, permutations", + "display_default": "loop" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "merge.coalesce", + "source_file": "wrangles-docs/wrangle-docs/merge/_sources/coalesce.md", + "source_sha256": "3f1b1e85b473cfbc3dffb2ae5029f2653210fe0bdfda52f1d01ec0f74347871f", + "id": "25c1a60d-fa48-4b9a-8c03-0921d5b31049", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "required_mismatch", + "parameter": "output", + "quasi_registry_required": true, + "runtime_required": false + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_required_mismatch", + "parameter": "output", + "quasi_registry_required": true, + "embedded_schema_required": false + } + ], + "normalized_registry_differences": [ + { + "code": "required_mismatch", + "parameter": "output", + "quasi_registry_required": true, + "normalized_registry_required": false + } + ], + "migration_content": { + "title": "Coalesce", + "type": "merge", + "subtype": "coalesce", + "variant": "stock", + "status": "active", + "tags": [ + "Merge", + "merge", + "coalesce" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "List of input columns.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "text", + "description": "Name of the output column.", + "allowed_values": "", + "display_default": "\"Coalesce Output\"" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "merge.concatenate", + "source_file": "wrangles-docs/wrangle-docs/merge/_sources/concatenate.md", + "source_sha256": "c717a93ecc5441cd66a55ede27b204cbe7dc3e64aaa0464f82ed598d1f8f6aad", + "id": "6ff76728-e1f6-4d3d-8946-6aa3b7524b3f", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [ + { + "code": "embedded_required_mismatch", + "parameter": "char", + "quasi_registry_required": false, + "embedded_schema_required": true + } + ], + "normalized_registry_differences": [], + "migration_content": { + "title": "Concatenate", + "type": "merge", + "subtype": "concatenate", + "variant": "stock", + "status": "active", + "tags": [ + "Merge", + "merge", + "concatenate" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Single column name or list of columns.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "text", + "description": "Name of the output column.", + "allowed_values": "", + "display_default": "\"Concatenate Output\"" + }, + { + "name": "char", + "required": false, + "label": "Char", + "ui_type": "text", + "description": "Character to add between successive values.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "skip_empty", + "required": false, + "label": "Skip Empty", + "ui_type": "boolean", + "description": "Whether to skip empty values, defaults to false.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "merge.dictionaries", + "source_file": "wrangles-docs/wrangle-docs/merge/_sources/dictionaries.md", + "source_sha256": "6f9eca5cf43db96f99c802bb080fc16d0ed00a4ba0f50d516652044be374b21b", + "id": "93e27737-e966-4ba9-8777-4e96724ebfc4", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Dictionaries", + "type": "merge", + "subtype": "dictionaries", + "variant": "stock", + "status": "active", + "tags": [ + "Merge", + "merge", + "dictionaries" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "List of input columns.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "text", + "description": "Name of the output column.", + "allowed_values": "", + "display_default": "\"Dictionaries Output\"" + }, + { + "name": "skip_empty", + "required": false, + "label": "Skip Empty", + "ui_type": "boolean", + "description": "Whether to skip empty values, defaults to false.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "merge.key_value_pairs", + "source_file": "wrangles-docs/wrangle-docs/merge/_sources/key-value-pairs.md", + "source_sha256": "347a7fe8039ed394ae32268f4d30c941feff576c11ce90f8d37ee6aa21639834", + "id": "8a2cd37c-8ef7-4b05-8264-36512f5dd837", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Key Value Pairs", + "type": "merge", + "subtype": "key_value_pairs", + "variant": "stock", + "status": "active", + "tags": [ + "Merge", + "merge", + "key_value_pairs" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "text", + "description": "Matched pairs of key and value columns.", + "allowed_values": "", + "display_default": "\"Column A\"" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "text", + "description": "Name of the output column.", + "allowed_values": "", + "display_default": "\"Key Value Pairs Output\"" + }, + { + "name": "skip_empty", + "required": false, + "label": "Skip Empty", + "ui_type": "boolean", + "description": "Whether to skip empty values, defaults to false.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "merge.lists", + "source_file": "wrangles-docs/wrangle-docs/merge/_sources/lists.md", + "source_sha256": "b9bf9e2d4878999237598780319c059c6326b07ee17544d83cf0491cba42e586", + "id": "d9978f00-b3d4-4583-884e-a53b98a43e9a", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Lists", + "type": "merge", + "subtype": "lists", + "variant": "stock", + "status": "active", + "tags": [ + "Merge", + "merge", + "lists" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "List of input columns.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "text", + "description": "Name of the output column.", + "allowed_values": "", + "display_default": "\"Lists Output\"" + }, + { + "name": "ignore_case", + "required": false, + "label": "Ignore Case", + "ui_type": "boolean", + "description": "Ignore case when removing duplicates.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "include_empty", + "required": false, + "label": "Include Empty", + "ui_type": "boolean", + "description": "Whether to include empty values in the created list.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "remove_duplicates", + "required": false, + "label": "Remove Duplicates", + "ui_type": "boolean", + "description": "Whether to remove duplicates from the created list, defaults to false.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "merge.to_dict", + "source_file": "wrangles-docs/wrangle-docs/merge/_sources/to-dict.md", + "source_sha256": "78ea0c7401164211928368215728d85ca9429b3d61dbcff74fa660b5d27c0bb3", + "id": "9b869210-0d89-403b-8409-7cecdb5f9c7c", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "To Dict", + "type": "merge", + "subtype": "to_dict", + "variant": "stock", + "status": "active", + "tags": [ + "Merge", + "merge", + "to_dict" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "List of input columns.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "text", + "description": "Name of the output column.", + "allowed_values": "", + "display_default": "\"To Dict Output\"" + }, + { + "name": "include_empty", + "required": false, + "label": "Include Empty", + "ui_type": "boolean", + "description": "Whether to include empty columns in the created dictionary, defaults to false.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "merge.to_list", + "source_file": "wrangles-docs/wrangle-docs/merge/_sources/to-list.md", + "source_sha256": "d854a4648e56dd90763b06c30d762f58967f1cacf534bbad6351c02e283924fb", + "id": "d5300fe7-c8a4-4a41-8f12-f2c1698678cc", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "To List", + "type": "merge", + "subtype": "to_list", + "variant": "stock", + "status": "active", + "tags": [ + "Merge", + "merge", + "to_list" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "List of input columns.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "text", + "description": "Name of the output column.", + "allowed_values": "", + "display_default": "\"To List Output\"" + }, + { + "name": "include_empty", + "required": false, + "label": "Include Empty", + "ui_type": "boolean", + "description": "Whether to include empty columns in the created list, defaults to false.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "python", + "source_file": "wrangles-docs/wrangle-docs/compute/_sources/python.md", + "source_sha256": "c754743e52e06b0dd77eb883d9ad8a45f8ce3c204a4901ea5e41e66bb3abd616", + "id": "c0398a11-7731-4e47-8df0-b07eea0b1d6c", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "where" + }, + { + "code": "runtime_only_parameter", + "parameter": "where_params" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "where" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where_params" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "where" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where_params" + } + ], + "migration_content": { + "title": "Python", + "type": "compute", + "subtype": "", + "variant": "stock", + "status": "active", + "tags": [ + "Compute", + "python" + ], + "parameters": [ + { + "name": "input", + "required": false, + "label": "Input", + "ui_type": "list", + "description": "Name or list of input columns to filter the data available to the command. Useful with `kwargs` to target a variable range of columns.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "list", + "description": "Name or list of output columns. To output multiple columns, return a list of the corresponding length.", + "allowed_values": "", + "display_default": "[\"Python Output\"]" + }, + { + "name": "command", + "required": true, + "label": "Command", + "ui_type": "text", + "description": "Python command. This must return a value.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "except", + "required": false, + "label": "Except", + "ui_type": "boolean", + "description": "Value to return for the row if an exception occurs. If omitted, exceptions are raised normally. If multiple output columns are specified, this must match the output length.", + "allowed_values": "", + "display_default": "false" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "reindex", + "source_file": "wrangles-docs/wrangle-docs/transform/_sources/reindex.md", + "source_sha256": "315e429591efff181ca3a9f4a6eee6dc138ff05002b4e1f4293abd5c245fb0c5", + "id": "def87df8-72da-4e34-83c1-1fde25126257", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Reindex", + "type": "transform", + "subtype": "", + "variant": "stock", + "status": "active", + "tags": [ + "Transform", + "reindex" + ], + "parameters": [ + { + "name": "columns", + "required": false, + "label": "Columns", + "ui_type": "list", + "description": "New labels for the columns. Preferably an Index object to avoid duplicating data.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "axis", + "required": false, + "label": "Axis", + "ui_type": "text", + "description": "Axis to target. Can be either the axis name (‘index’, ‘columns’) or number (0, 1).", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "index", + "required": false, + "label": "Index", + "ui_type": "list", + "description": "New labels for the index. Preferably an Index object to avoid duplicating data.", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "labels", + "required": false, + "label": "Labels", + "ui_type": "list", + "description": "New labels / index to conform the axis specified by `axis`.", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "remove_words", + "source_file": "wrangles-docs/wrangle-docs/format/_sources/remove-words.md", + "source_sha256": "7c03c0b89247ec2bdd9d44d95280d31ba365358c6e48fb5cc7cd91a7b47d20dc", + "id": "543b96c3-f354-48be-8046-bf0cb9fbaf56", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [ + { + "code": "embedded_required_mismatch", + "parameter": "output", + "quasi_registry_required": false, + "embedded_schema_required": true + } + ], + "normalized_registry_differences": [], + "migration_content": { + "title": "Remove Words", + "type": "format", + "subtype": "", + "variant": "stock", + "status": "active", + "tags": [ + "Format", + "remove_words" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of column to remove words from", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "If omitted, overwrites input.", + "allowed_values": "", + "display_default": "[\"Remove Words Output\"]" + }, + { + "name": "to_remove", + "required": true, + "label": "To Remove", + "ui_type": "list", + "description": "Column or list of columns with a list of words to be removed", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "tokenize_to_remove", + "required": false, + "label": "Tokenize To Remove", + "ui_type": "boolean", + "description": "Tokenize all `to_remove` inputs, defaults to false.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "ignore_case", + "required": false, + "label": "Ignore Case", + "ui_type": "boolean", + "description": "Ignore input and `to_remove` case, defaults to true.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "rename", + "source_file": "wrangles-docs/wrangle-docs/transform/_sources/rename.md", + "source_sha256": "cf3d11633670f3ecafd9338f0d35330773bc6ca1f970ac4656396788baf487aa", + "id": "ab06898f-faf7-42e7-8275-5e3034a4d727", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Rename", + "type": "transform", + "subtype": "", + "variant": "stock", + "status": "active", + "tags": [ + "Transform", + "rename" + ], + "parameters": [ + { + "name": "input", + "required": false, + "label": "Input", + "ui_type": "list", + "description": "Name or list of input columns.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "Name or list of output columns.", + "allowed_values": "", + "display_default": "[\"Rename Output\"]" + }, + { + "name": "wrangles", + "required": false, + "label": "Wrangles", + "ui_type": "list", + "description": "Use wrangles to transform the column names. The input is named `columns` and the final result must also include the column named `columns`. This can only be used instead of the standard rename.", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "replace", + "source_file": "wrangles-docs/wrangle-docs/format/_sources/replace.md", + "source_sha256": "e85368938a2501911ed140fa938743fc9af09ff6baab3bb4a9b77bfb3d21a0a0", + "id": "f0ab715e-9e0e-4614-83e4-5cd8ea08a09f", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Replace", + "type": "format", + "subtype": "", + "variant": "stock", + "status": "active", + "tags": [ + "Format", + "replace" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name or list of input columns.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "Overwrites input if none given.", + "allowed_values": "", + "display_default": "[\"Replace Output\"]" + }, + { + "name": "find", + "required": true, + "label": "Find", + "ui_type": "text", + "description": "String or regex pattern to find.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "replace", + "required": true, + "label": "Replace", + "ui_type": "text", + "description": "Value to replace the string or regex pattern.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "round", + "source_file": "wrangles-docs/wrangle-docs/format/_sources/round.md", + "source_sha256": "6cac3f1e38b87fd4f49faa246bb71e77fc64b805d58d54baf4e1921cfa59d36e", + "id": "12f3111b-8511-4e42-8d3f-b5302dc3b4e4", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Round", + "type": "format", + "subtype": "", + "variant": "stock", + "status": "active", + "tags": [ + "Format", + "round" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of the input column.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "Overwrites input if none given.", + "allowed_values": "", + "display_default": "[\"Round Output\"]" + }, + { + "name": "decimals", + "required": false, + "label": "Decimals", + "ui_type": "number", + "description": "Number of decimal places to round to, default is zero.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "search.find_links", + "source_file": "wrangles-docs/wrangle-docs/search/_sources/find-links.md", + "source_sha256": "2ee0cd046b5a5b61742b32b23a095890091c61b29996d694c7e7ae87e8d43b5b", + "id": "ec1f661b-2cbc-4a47-88e3-646179104376", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "if" + }, + { + "code": "required_mismatch", + "parameter": "output", + "quasi_registry_required": true, + "runtime_required": false + }, + { + "code": "runtime_only_parameter", + "parameter": "where" + }, + { + "code": "runtime_only_parameter", + "parameter": "where_params" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "if" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where_params" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "if" + }, + { + "code": "required_mismatch", + "parameter": "output", + "quasi_registry_required": true, + "normalized_registry_required": false + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where_params" + } + ], + "migration_content": { + "title": "Find Links", + "type": "search", + "subtype": "find_links", + "variant": "stock", + "status": "active", + "tags": [ + "Search", + "search", + "find_links" + ], + "parameters": [ + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "list", + "description": "Output column for the dictionaries. If a list of 2 is provided, outputs [dicts_column, pretty_strings_column].", + "allowed_values": "", + "display_default": "[\"Find Links Output\"]" + }, + { + "name": "id", + "required": true, + "label": "Id", + "ui_type": "text", + "description": "Name of the column containing the row ID to append to each search result.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "queries", + "required": true, + "label": "Queries", + "ui_type": "list", + "description": "Name or list of input columns containing search queries.", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "api_key", + "required": false, + "label": "Api Key", + "ui_type": "text", + "description": "API key for the search client. Can also be set as an environment variable (e.g., SERPAPI_API_KEY).", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "client", + "required": false, + "label": "Client", + "ui_type": "select", + "description": "The search provider to use.", + "allowed_values": "serpapi", + "display_default": "\"serpapi\"" + }, + { + "name": "country", + "required": false, + "label": "Country", + "ui_type": "text", + "description": "Country code for search results (default 'us'). Alias: gl.", + "allowed_values": "", + "display_default": "\"us\"" + }, + { + "name": "device", + "required": false, + "label": "Device", + "ui_type": "select", + "description": "Device type for search results.", + "allowed_values": "desktop, mobile, tablet", + "display_default": "\"\"" + }, + { + "name": "language", + "required": false, + "label": "Language", + "ui_type": "text", + "description": "Language code for search results (default 'en'). Alias: hl.", + "allowed_values": "", + "display_default": "\"en\"" + }, + { + "name": "location", + "required": false, + "label": "Location", + "ui_type": "text", + "description": "Location for search results (e.g., 'Austin, Texas').", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "n_results", + "required": false, + "label": "N Results", + "ui_type": "number", + "description": "Number of search results to return per query (default 10, max 100).", + "allowed_values": "", + "display_default": "10" + }, + { + "name": "threads", + "required": false, + "label": "Threads", + "ui_type": "number", + "description": "Number of concurrent threads for parallel processing (default 10).", + "allowed_values": "", + "display_default": "10" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "search.retrieve_link_content", + "source_file": "wrangles-docs/wrangle-docs/search/_sources/retrieve-link-content.md", + "source_sha256": "4d345538761cf698b2997aeedf8cc263337d641b1db5a6aacceb28a45b418e9e", + "id": "3d5faa87-9e96-48c0-8226-5ae566e8d76c", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "if" + }, + { + "code": "required_mismatch", + "parameter": "output", + "quasi_registry_required": true, + "runtime_required": false + }, + { + "code": "runtime_only_parameter", + "parameter": "where" + }, + { + "code": "runtime_only_parameter", + "parameter": "where_params" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "if" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where_params" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "if" + }, + { + "code": "required_mismatch", + "parameter": "output", + "quasi_registry_required": true, + "normalized_registry_required": false + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where_params" + } + ], + "migration_content": { + "title": "Retrieve Link Content", + "type": "search", + "subtype": "retrieve_link_content", + "variant": "stock", + "status": "active", + "tags": [ + "Search", + "search", + "retrieve_link_content" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name or list of input columns containing URLs or Scored Search Result dictionaries.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "list", + "description": "Name of the output column for the raw dictionaries. To output BOTH the raw dictionaries and the formatted text, provide a list of exactly two column names (e.g., [page_data, page_text]).", + "allowed_values": "", + "display_default": "[\"Retrieve Link Content Output\"]" + }, + { + "name": "api_key", + "required": false, + "label": "Api Key", + "ui_type": "text", + "description": "API key for the provider. Can also be set as an environment variable (e.g., GOOGLE_API_KEY).", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "client", + "required": false, + "label": "Client", + "ui_type": "select", + "description": "The retrieval provider to use.", + "allowed_values": "google_url_context", + "display_default": "\"google_url_context\"" + }, + { + "name": "model_id", + "required": false, + "label": "Model Id", + "ui_type": "text", + "description": "The specific model ID to use (default models/gemini-3-flash-preview).", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "output_format", + "required": false, + "label": "Output Format", + "ui_type": "select", + "description": "The desired format for the extracted content.", + "allowed_values": "markdown, json", + "display_default": "\"json\"" + }, + { + "name": "prompt", + "required": false, + "label": "Prompt", + "ui_type": "text", + "description": "Optional custom system prompt to guide the extraction behavior and output format.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "threads", + "required": false, + "label": "Threads", + "ui_type": "number", + "description": "Number of concurrent threads for parallel processing (default 10).", + "allowed_values": "", + "display_default": "10" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "select.columns", + "source_file": "wrangles-docs/wrangle-docs/select/_sources/columns.md", + "source_sha256": "a3d46c68ee604b08fd1058fc32415ff46b9853a5ec4ecbaa65ae419acff12d2f", + "id": "bca12c60-3957-4dc5-83f7-5ee460df2a11", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "where" + }, + { + "code": "runtime_only_parameter", + "parameter": "where_params" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "where" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where_params" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "where" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where_params" + } + ], + "migration_content": { + "title": "Columns", + "type": "select", + "subtype": "columns", + "variant": "stock", + "status": "active", + "tags": [ + "Select", + "select", + "columns" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of the column(s) to select", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "select.dictionary_element", + "source_file": "wrangles-docs/wrangle-docs/select/_sources/dictionary-element.md", + "source_sha256": "08db4d11246e83a711d2b2be320ed84c55ea84347d4db0a51657aa69d04d9875", + "id": "5adaeada-6da8-464f-84cb-9fb5ecc17e48", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Dictionary Element", + "type": "select", + "subtype": "dictionary_element", + "variant": "stock", + "status": "active", + "tags": [ + "Select", + "select", + "dictionary_element" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of the input column", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "Name of the output column. If omitted, the input column will be replaced.", + "allowed_values": "", + "display_default": "[\"Dictionary Element Output\"]" + }, + { + "name": "element", + "required": true, + "label": "Element", + "ui_type": "list", + "description": "The key or keys from the dictionary to select.", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "default", + "required": false, + "label": "Default", + "ui_type": "boolean", + "description": "Set the default value to return if the specified element doesn't exist.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "select.element", + "source_file": "wrangles-docs/wrangle-docs/select/_sources/element.md", + "source_sha256": "404e69456223d1b1463bb689183d076dbaf3d391b4cec91e9f0f449eb5dbf9ad", + "id": "223d2f4e-3247-4189-8b6c-e73fe44c4266", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "where" + }, + { + "code": "runtime_only_parameter", + "parameter": "where_params" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "where" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where_params" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "where" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where_params" + } + ], + "migration_content": { + "title": "Element", + "type": "select", + "subtype": "element", + "variant": "stock", + "status": "active", + "tags": [ + "Select", + "select", + "element" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of the input column and sub elements This permits by index for lists or dict and by key for dicts e.g. col[0]['key'] // [\\{\"key\":\"val\"\\}] -> \"val\"", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "Name of the output column(s)", + "allowed_values": "", + "display_default": "[\"Element Output\"]" + }, + { + "name": "default", + "required": false, + "label": "Default", + "ui_type": "json", + "description": "Set the default value to return if the specified element does not exist.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "select.group_by", + "source_file": "wrangles-docs/wrangle-docs/select/_sources/group-by.md", + "source_sha256": "422a579598932241be07034c6d396b82330ac1701198ca913e29c25ad52faf66", + "id": "c0af10b1-423a-416c-8cb5-7e7fe1164964", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "counts" + }, + { + "code": "runtime_only_parameter", + "parameter": "where" + }, + { + "code": "runtime_only_parameter", + "parameter": "where_params" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "counts" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where_params" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "counts" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where_params" + } + ], + "migration_content": { + "title": "Group By", + "type": "select", + "subtype": "group_by", + "variant": "stock", + "status": "active", + "tags": [ + "Select", + "select", + "group_by" + ], + "parameters": [ + { + "name": "by", + "required": false, + "label": "By", + "ui_type": "list", + "description": "List of the input columns to group on", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "all", + "required": false, + "label": "All", + "ui_type": "list", + "description": "Return true if all of the values for these column(s) are true", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "any", + "required": false, + "label": "Any", + "ui_type": "list", + "description": "Return true if any of the values for these column(s) are true", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "auto_rename_columns", + "required": false, + "label": "Auto Rename Columns", + "ui_type": "boolean", + "description": "If true (default), aggregated column names include the operation as a suffix (e.g. Value.sum). If false, column names are left as-is; use a dictionary entry to supply a custom output name (e.g. - Value: Total).", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "count", + "required": false, + "label": "Count", + "ui_type": "list", + "description": "The count of values for these column(s)", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "custom.placeholder", + "required": false, + "label": "Custom Placeholder", + "ui_type": "list", + "description": "Placeholder for custom functions. Replace 'placeholder' with the name of the function.", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "first", + "required": false, + "label": "First", + "ui_type": "list", + "description": "The first value for these column(s)", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "last", + "required": false, + "label": "Last", + "ui_type": "list", + "description": "The last value for these column(s)", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "list", + "required": false, + "label": "List", + "ui_type": "list", + "description": "Group and return all values for these column(s) as a list", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "max", + "required": false, + "label": "Max", + "ui_type": "list", + "description": "The maximum value for these column(s)", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "mean", + "required": false, + "label": "Mean", + "ui_type": "list", + "description": "The mean (average) value for these column(s)", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "median", + "required": false, + "label": "Median", + "ui_type": "list", + "description": "The median value for these column(s)", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "min", + "required": false, + "label": "Min", + "ui_type": "list", + "description": "The minimum value for these column(s)", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "nunique", + "required": false, + "label": "Nunique", + "ui_type": "list", + "description": "The count of unique values for these column(s)", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "p75", + "required": false, + "label": "P75", + "ui_type": "list", + "description": "Get a percentile. Note, you can use any integer here for the corresponding percentile.", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "std", + "required": false, + "label": "Std", + "ui_type": "list", + "description": "The standard deviation of values for these column(s)", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "sum", + "required": false, + "label": "Sum", + "ui_type": "list", + "description": "The total of values for these column(s)", + "allowed_values": "", + "display_default": "[]" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "select.head", + "source_file": "wrangles-docs/wrangle-docs/select/_sources/head.md", + "source_sha256": "7526541cdb6a84f50b8ba162370ab356071442d12e7800329fbaac7fd745592d", + "id": "237af1ec-db7d-415a-88b7-70586a2191fb", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "where" + }, + { + "code": "runtime_only_parameter", + "parameter": "where_params" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "where" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where_params" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "where" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where_params" + } + ], + "migration_content": { + "title": "Head", + "type": "select", + "subtype": "head", + "variant": "stock", + "status": "active", + "tags": [ + "Select", + "select", + "head" + ], + "parameters": [ + { + "name": "n", + "required": true, + "label": "N", + "ui_type": "number", + "description": "Number of rows to return", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "select.highest_confidence", + "source_file": "wrangles-docs/wrangle-docs/select/_sources/highest-confidence.md", + "source_sha256": "a4a7a6c517e29b6a81718fd52dc91c921071aded22c28c206f7a5587f4b59b16", + "id": "00aad85d-8cc8-42e5-86f3-e4ff916e8ac2", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Highest Confidence", + "type": "select", + "subtype": "highest_confidence", + "variant": "stock", + "status": "active", + "tags": [ + "Select", + "select", + "highest_confidence" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "The input columns to select from.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "list", + "description": "If a list of two, separates the element and its confidence. If one column is provided, returns `[result, confidence]`.", + "allowed_values": "", + "display_default": "[\"Highest Confidence Output\"]" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "select.left", + "source_file": "wrangles-docs/wrangle-docs/select/_sources/left.md", + "source_sha256": "1e55c6e868c8d144a84d8bbe1d14f6d4c1d79d2e54dc392412d769a0f183e8b0", + "id": "5cdd9857-0c77-43bf-80d7-d0a8cb6f980b", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Left", + "type": "select", + "subtype": "left", + "variant": "stock", + "status": "active", + "tags": [ + "Select", + "select", + "left" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of the column(s) to edit", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "If omitted, overwrites input.", + "allowed_values": "", + "display_default": "[\"Left Output\"]" + }, + { + "name": "length", + "required": true, + "label": "Length", + "ui_type": "number", + "description": "Number of characters to include.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "select.length", + "source_file": "wrangles-docs/wrangle-docs/select/_sources/length.md", + "source_sha256": "5aad012949d70813e379ec4127d7e04a6ee784898130e299933533b3c3b7333a", + "id": "4d7a5f66-0a4a-40e0-8298-d5c55754423d", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Length", + "type": "select", + "subtype": "length", + "variant": "stock", + "status": "active", + "tags": [ + "Select", + "select", + "length" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of the input column(s).", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "If omitted, overwrites input.", + "allowed_values": "", + "display_default": "[\"Length Output\"]" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "select.list_element", + "source_file": "wrangles-docs/wrangle-docs/select/_sources/list-element.md", + "source_sha256": "f61222f599a90b0ea39e6ad4c391e05ce8b31418b12c1f22bd4ea37256cffed4", + "id": "ec40495d-d29a-4f62-86dd-eafa43cf388a", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [ + { + "code": "embedded_required_mismatch", + "parameter": "element", + "quasi_registry_required": false, + "embedded_schema_required": true + } + ], + "normalized_registry_differences": [], + "migration_content": { + "title": "List Element", + "type": "select", + "subtype": "list_element", + "variant": "stock", + "status": "active", + "tags": [ + "Select", + "select", + "list_element" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of the input column", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "If omitted, overwrites input.", + "allowed_values": "", + "display_default": "[\"List Element Output\"]" + }, + { + "name": "element", + "required": false, + "label": "Element", + "ui_type": "number", + "description": "The numbered element of the list to select. Starts from zero. If omitted, defaults to 0.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "default", + "required": false, + "label": "Default", + "ui_type": "boolean", + "description": "Set the default value to return if the specified element doesn't exist.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "select.right", + "source_file": "wrangles-docs/wrangle-docs/select/_sources/right.md", + "source_sha256": "d116891c25e4e5d0e74115c9985f21e590e3a6ced51cee0da8d0fa92e499ce57", + "id": "89ee82ec-3bc5-4bfa-899b-7a1260ef9bdb", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Right", + "type": "select", + "subtype": "right", + "variant": "stock", + "status": "active", + "tags": [ + "Select", + "select", + "right" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of the column(s) to edit", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "If omitted, overwrites input.", + "allowed_values": "", + "display_default": "[\"Right Output\"]" + }, + { + "name": "length", + "required": true, + "label": "Length", + "ui_type": "number", + "description": "Number of characters to include.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "select.sample", + "source_file": "wrangles-docs/wrangle-docs/select/_sources/sample.md", + "source_sha256": "e94b71835e5bec0677819fd3ab5524685460e85d325d187a5e9694373bf481c1", + "id": "95a84ab6-a66e-450f-8a4a-7a87e3a77932", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "where" + }, + { + "code": "runtime_only_parameter", + "parameter": "where_params" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "where" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where_params" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "where" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where_params" + } + ], + "migration_content": { + "title": "Sample", + "type": "select", + "subtype": "sample", + "variant": "stock", + "status": "active", + "tags": [ + "Select", + "select", + "sample" + ], + "parameters": [ + { + "name": "rows", + "required": true, + "label": "Rows", + "ui_type": "number", + "description": "If a whole number, will select that number of rows.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "select.substring", + "source_file": "wrangles-docs/wrangle-docs/select/_sources/substring.md", + "source_sha256": "f937e1b1a4a1a98de0820f59de7e88c7bf28b89bb2b5db765ca63bbda7db997c", + "id": "8befddf8-602e-4fa9-8f16-4c547210ebec", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [ + { + "code": "embedded_required_mismatch", + "parameter": "length", + "quasi_registry_required": false, + "embedded_schema_required": true + }, + { + "code": "embedded_required_mismatch", + "parameter": "start", + "quasi_registry_required": false, + "embedded_schema_required": true + } + ], + "normalized_registry_differences": [], + "migration_content": { + "title": "Substring", + "type": "select", + "subtype": "substring", + "variant": "stock", + "status": "active", + "tags": [ + "Select", + "select", + "substring" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of the column(s) to edit", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "Name of the output column(s)", + "allowed_values": "", + "display_default": "[\"Substring Output\"]" + }, + { + "name": "length", + "required": false, + "label": "Length", + "ui_type": "number", + "description": "The length of the string to select. If omitted, selects to the end of the string and `start` must be provided.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "start", + "required": false, + "label": "Start", + "ui_type": "number", + "description": "The position of the first character to select. If omitted, starts from the beginning and `length` must be provided.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "select.tail", + "source_file": "wrangles-docs/wrangle-docs/select/_sources/tail.md", + "source_sha256": "56abc9f80ceca169825a07d109c35788d45a22f32c8627cb2d188ba0a2c03cd2", + "id": "60853759-c160-49a4-87eb-036516a9d823", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "where" + }, + { + "code": "runtime_only_parameter", + "parameter": "where_params" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "where" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where_params" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "where" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where_params" + } + ], + "migration_content": { + "title": "Tail", + "type": "select", + "subtype": "tail", + "variant": "stock", + "status": "active", + "tags": [ + "Select", + "select", + "tail" + ], + "parameters": [ + { + "name": "n", + "required": true, + "label": "N", + "ui_type": "number", + "description": "Number of rows to return", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "select.threshold", + "source_file": "wrangles-docs/wrangle-docs/select/_sources/threshold.md", + "source_sha256": "fa19e85eac653bdb205e55a43a902ef3ee9b91c95c221cf7dbbe4644e0306368", + "id": "af2a5dcc-0ec0-48d7-8fb4-f58d9c5391d2", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Threshold", + "type": "select", + "subtype": "threshold", + "variant": "stock", + "status": "active", + "tags": [ + "Select", + "select", + "threshold" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "List of the input columns to select from", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "text", + "description": "Name of the output column", + "allowed_values": "", + "display_default": "\"Threshold Output\"" + }, + { + "name": "threshold", + "required": true, + "label": "Threshold", + "ui_type": "number", + "description": "Threshold above which to choose the first option, otherwise the second", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "similarity", + "source_file": "wrangles-docs/wrangle-docs/compare/_sources/similarity.md", + "source_sha256": "5c620afc19ddad3f683f62f6742ad9b637c8707fa1895d2411c4583633c991d5", + "id": "7c733344-4cce-4938-8013-53742fb46a90", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Similarity", + "type": "compare", + "subtype": "", + "variant": "stock", + "status": "active", + "tags": [ + "Compare", + "similarity" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Two columns of vectors to compare.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "text", + "description": "Name of the output column.", + "allowed_values": "", + "display_default": "\"Similarity Output\"" + }, + { + "name": "method", + "required": false, + "label": "Method", + "ui_type": "select", + "description": "Type of similarity to calculate. Defaults to cosine. Adjusted cosine maps typical comparisons to a 0-1 range.", + "allowed_values": "cosine, adjusted cosine, euclidean", + "display_default": "\"\"" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` for parameterized criteria. Uses SQLite syntax such as `?` or `:name`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "sort", + "source_file": "wrangles-docs/wrangle-docs/select/_sources/sort.md", + "source_sha256": "4056ed5b6113c237888f1abb5c9fd9b0e0627bccb15fea5cc541ef5b2aa97495", + "id": "1dcf06ad-898a-4d83-862c-4774be37a687", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "ignore_index" + }, + { + "code": "runtime_only_parameter", + "parameter": "where" + }, + { + "code": "runtime_only_parameter", + "parameter": "where_params" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "where" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where_params" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "ignore_index" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where_params" + } + ], + "migration_content": { + "title": "Sort", + "type": "select", + "subtype": "", + "variant": "stock", + "status": "active", + "tags": [ + "Select", + "sort" + ], + "parameters": [ + { + "name": "by", + "required": true, + "label": "By", + "ui_type": "list", + "description": "Name or list of the column(s) to sort by", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "ascending", + "required": false, + "label": "Ascending", + "ui_type": "boolean", + "description": "Sort ascending vs. descending. Specify a list to sort multiple columns in different orders. If this is a list of bools then it must match the length of the by.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "split.dictionary", + "source_file": "wrangles-docs/wrangle-docs/split/_sources/dictionary.md", + "source_sha256": "30d679c4a4ea7f556f6192da0f922a73f77077c6eaa63469464b78c1a1d29062", + "id": "06ca98e4-d026-43f7-84eb-af246d401ba9", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "output_format" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "output_format" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "output_format" + } + ], + "migration_content": { + "title": "Dictionary", + "type": "split", + "subtype": "dictionary", + "variant": "stock", + "status": "active", + "tags": [ + "Split", + "split", + "dictionary" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name or list of columns containing dictionaries to split. If providing multiple dictionaries and they contain overlapping values, the last value is returned.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "Optional subset of keys to extract from the dictionary. If not provided, all keys are returned.", + "allowed_values": "", + "display_default": "[\"Dictionary Output\"]" + }, + { + "name": "default", + "required": false, + "label": "Default", + "ui_type": "json", + "description": "Provide a set of default headings and values if they are not found within the input.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "split.list", + "source_file": "wrangles-docs/wrangle-docs/split/_sources/list.md", + "source_sha256": "e84e7007a165de155f98489ed007a076f7e3d22135780eec15d7cb4cae5cdc43", + "id": "3260b9f7-aae2-499f-8004-d211c2cf643e", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "where" + }, + { + "code": "runtime_only_parameter", + "parameter": "where_params" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "where" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where_params" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "where" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where_params" + } + ], + "migration_content": { + "title": "List", + "type": "split", + "subtype": "list", + "variant": "stock", + "status": "active", + "tags": [ + "Split", + "split", + "list" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "text", + "description": "Name of the column to split.", + "allowed_values": "", + "display_default": "\"Column A\"" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "list", + "description": "Output supports a wildcard to dynamically number the columns, such as `col*` -> `col1`, `col2`, `col3`.", + "allowed_values": "", + "display_default": "[\"List Output\"]" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "split.text", + "source_file": "wrangles-docs/wrangle-docs/split/_sources/text.md", + "source_sha256": "bac740d3388dbb2ba3289439ed640d75af972230fe603a2717641dbf475b5ed0", + "id": "e76e43f7-d129-4bf8-87b4-a304a378b130", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Text", + "type": "split", + "subtype": "text", + "variant": "stock", + "status": "active", + "tags": [ + "Split", + "split", + "text" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "text", + "description": "Name of the column to split.", + "allowed_values": "", + "display_default": "\"Column A\"" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "Name of the output column(s). If a single column is provided, results are returned as a list. If multiple columns are listed, results are separated into columns. If omitted, overwrites input. Allows a wildcard (`*`) to name output columns with incrementing numbers.", + "allowed_values": "", + "display_default": "[\"Text Output\"]" + }, + { + "name": "char", + "required": false, + "label": "Char", + "ui_type": "text", + "description": "Character(s) to split on. Default comma (`,`). Prefix with `regex:` to split on a pattern.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "element", + "required": false, + "label": "Element", + "ui_type": "text", + "description": "Select specific elements or ranges after splitting. Accepts Python slicing syntax.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "inclusive", + "required": false, + "label": "Inclusive", + "ui_type": "boolean", + "description": "If true, include the split character in the output. Default false.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "pad", + "required": false, + "label": "Pad", + "ui_type": "boolean", + "description": "Choose whether to pad to ensure a consistent length. Default true if outputting to columns, false for lists.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "skip_empty", + "required": false, + "label": "Skip Empty", + "ui_type": "boolean", + "description": "Whether to skip empty values, defaults to false.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "split.tokenize", + "source_file": "wrangles-docs/wrangle-docs/split/_sources/tokenize.md", + "source_sha256": "4a1bc94d385a62085f82b3c5098e5e2d974e5fcfbcb41c0aed3480301ad9414e", + "id": "6cc88418-ae0c-43f6-84ee-31e0d5f838c3", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [], + "normalized_registry_differences": [], + "migration_content": { + "title": "Tokenize", + "type": "split", + "subtype": "tokenize", + "variant": "stock", + "status": "active", + "tags": [ + "Split", + "split", + "tokenize" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Column(s) to split into tokens.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "If omitted, overwrites input.", + "allowed_values": "", + "display_default": "[\"Tokenize Output\"]" + }, + { + "name": "method", + "required": false, + "label": "Method", + "ui_type": "select", + "description": "Method to split the list. Options include `space`, `boundary`, `boundary_ignore_space`, custom functions as `custom.`, or regex patterns as `regex:`.", + "allowed_values": "space, boundary, boundary_ignore_space", + "display_default": "\"\"" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "sql", + "source_file": "wrangles-docs/wrangle-docs/compute/_sources/sql.md", + "source_sha256": "5335cdba2136516e61bd997760b73c5831e48349dcad3559358e98d2b711b2b0", + "id": "467a06b1-a697-4d31-8061-7d83a719fd79", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "preserve_data_types" + }, + { + "code": "runtime_only_parameter", + "parameter": "preserve_index" + }, + { + "code": "runtime_only_parameter", + "parameter": "where" + }, + { + "code": "runtime_only_parameter", + "parameter": "where_params" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "where" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where_params" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "preserve_data_types" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "preserve_index" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where_params" + } + ], + "migration_content": { + "title": "SQL", + "type": "compute", + "subtype": "", + "variant": "stock", + "status": "active", + "tags": [ + "Compute", + "sql" + ], + "parameters": [ + { + "name": "command", + "required": true, + "label": "Command", + "ui_type": "text", + "description": "SQL command. The table is called `df`. For specific SQL syntax, this uses the SQLite dialect.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "params", + "required": false, + "label": "Params", + "ui_type": "json", + "description": "Variables to use in conjunction with the SQL command.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "standardize", + "source_file": "wrangles-docs/wrangle-docs/format/_sources/standardize.md", + "source_sha256": "67ca984d7062ce674f88b207827b740ff2b004a91fed028349f0f6441b9df4d2", + "id": "53cd3fdd-24e2-4411-8655-6014b92a3f3a", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [ + { + "code": "embedded_required_mismatch", + "parameter": "model_id", + "quasi_registry_required": true, + "embedded_schema_required": false + } + ], + "normalized_registry_differences": [], + "migration_content": { + "title": "Standardize", + "type": "format", + "subtype": "", + "variant": "stock", + "status": "active", + "tags": [ + "Format", + "standardize" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name or list of input columns.", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": false, + "label": "Output", + "ui_type": "list", + "description": "If omitted, overwrites input.", + "allowed_values": "", + "display_default": "[\"Standardize Output\"]" + }, + { + "name": "case_sensitive", + "required": false, + "label": "Case Sensitive", + "ui_type": "boolean", + "description": "Allows the wrangle to be case sensitive if set to True, default is False.", + "allowed_values": "", + "display_default": "false" + }, + { + "name": "model_id", + "required": true, + "label": "Model Id", + "ui_type": "list", + "description": "The ID of the wrangle to use (do not include `find` and `replace`).", + "allowed_values": "", + "display_default": "[]" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "translate", + "source_file": "wrangles-docs/wrangle-docs/format/_sources/translate.md", + "source_sha256": "94aeb903bfc5a0c18334dcf54c6a8dda99647293f10aecfca6804622e8d82ec2", + "id": "73c3ceb6-ffd8-4d74-8389-c83b99d33bb0", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [], + "embedded_schema_differences": [ + { + "code": "quasi_registry_only_parameter", + "parameter": "case" + } + ], + "normalized_registry_differences": [], + "migration_content": { + "title": "Translate", + "type": "format", + "subtype": "", + "variant": "stock", + "status": "active", + "tags": [ + "Format", + "translate" + ], + "parameters": [ + { + "name": "input", + "required": true, + "label": "Input", + "ui_type": "list", + "description": "Name of the column to translate", + "allowed_values": "", + "display_default": "[\"Column A\", \"Column B\"]" + }, + { + "name": "output", + "required": true, + "label": "Output", + "ui_type": "list", + "description": "Name of the output column", + "allowed_values": "", + "display_default": "[\"Translate Output\"]" + }, + { + "name": "target_language", + "required": true, + "label": "Target Language", + "ui_type": "select", + "description": "Code of the language to translate to", + "allowed_values": "Bulgarian, Chinese, Czech, Danish, Dutch, English (American), English (British), Estonian, Finnish, French, German, Greek, Hungarian, Italian, Japanese, Latvian, Lithuanian, Polish, Portuguese, Portuguese (Brazilian), Romanian, Russian, Slovak, Slovenian, Spanish, Swedish", + "display_default": "\"Bulgarian\"" + }, + { + "name": "source_language", + "required": false, + "label": "Source Language", + "ui_type": "select", + "description": "Code of the language to translate from. If omitted, automatically detects the input language", + "allowed_values": "Auto, Bulgarian, Chinese, Czech, Danish, Dutch, English, Estonian, Finnish, French, German, Greek, Hungarian, Italian, Japanese, Latvian, Lithuanian, Polish, Portuguese, Romanian, Russian, Slovak, Slovenian, Spanish, Swedish", + "display_default": "\"\"" + }, + { + "name": "case", + "required": false, + "label": "Case", + "ui_type": "select", + "description": "Allow changing the case of the input prior to translation.", + "allowed_values": "lower, upper, title, sentence", + "display_default": "\"\"" + }, + { + "name": "where", + "required": false, + "label": "Where", + "ui_type": "text", + "description": "Filter the data to only apply the wrangle to certain rows using SQL-style criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "where_params", + "required": false, + "label": "Where Params", + "ui_type": "json", + "description": "Variables to use with `where` so the query can be parameterized. Uses SQLite syntax (`?` or `:name`).", + "allowed_values": "", + "display_default": "" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "transpose", + "source_file": "wrangles-docs/wrangle-docs/transform/_sources/transpose.md", + "source_sha256": "05aaaa9d9249d72c732a9df7b1ed36bb3e4e005a72b3261047af2a4a3f259dd3", + "id": "8716347f-f286-49b2-8a0b-cb73292e7475", + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "runtime_only_parameter", + "parameter": "where" + }, + { + "code": "runtime_only_parameter", + "parameter": "where_params" + } + ], + "embedded_schema_differences": [ + { + "code": "embedded_schema_only_parameter", + "parameter": "where" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where_params" + } + ], + "normalized_registry_differences": [ + { + "code": "normalized_registry_only_parameter", + "parameter": "where" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where_params" + } + ], + "migration_content": { + "title": "Transpose", + "type": "transform", + "subtype": "", + "variant": "stock", + "status": "active", + "tags": [ + "Transform", + "transpose" + ], + "parameters": [ + { + "name": "header_column", + "required": false, + "label": "Header Column", + "ui_type": "text", + "description": "Name or position of the column that will be used as the column headings for the transposed DataFrame. Default 0 (first column). Use `header_column = null` to not use any column as header.", + "allowed_values": "", + "display_default": "\"\"" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "A condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + }, + { + "wrangle_key": "try", + "source_file": "wrangles-docs/wrangle-docs/utility/_sources/try.md", + "source_sha256": "e173e775e8aae0d1bcaf3072fef562b8defc56a3b8114d67355457741b33307b", + "id": null, + "runtime_status": "matched", + "normalized_registry_status": "matched", + "runtime_parameter_differences": [ + { + "code": "quasi_registry_only_parameter", + "parameter": "df" + }, + { + "code": "quasi_registry_only_parameter", + "parameter": "functions" + }, + { + "code": "quasi_registry_only_parameter", + "parameter": "variables" + }, + { + "code": "runtime_only_parameter", + "parameter": "where" + }, + { + "code": "runtime_only_parameter", + "parameter": "where_params" + } + ], + "embedded_schema_differences": [ + { + "code": "quasi_registry_only_parameter", + "parameter": "df" + }, + { + "code": "quasi_registry_only_parameter", + "parameter": "functions" + }, + { + "code": "quasi_registry_only_parameter", + "parameter": "variables" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where" + }, + { + "code": "embedded_schema_only_parameter", + "parameter": "where_params" + } + ], + "normalized_registry_differences": [ + { + "code": "quasi_registry_only_parameter", + "parameter": "df" + }, + { + "code": "quasi_registry_only_parameter", + "parameter": "functions" + }, + { + "code": "quasi_registry_only_parameter", + "parameter": "variables" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where" + }, + { + "code": "normalized_registry_only_parameter", + "parameter": "where_params" + } + ], + "migration_content": { + "title": "Try", + "type": "utility", + "subtype": "", + "variant": "stock", + "status": "active (legacy documentation)", + "tags": [ + "Utility", + "try" + ], + "parameters": [ + { + "name": "df", + "required": true, + "label": "Dataframe", + "ui_type": "json", + "description": "Dataframe supplied to the nested wrangles by the recipe runtime.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "wrangles", + "required": true, + "label": "Wrangles", + "ui_type": "json", + "description": "Primary wrangles to apply.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "except", + "required": false, + "label": "Except", + "ui_type": "json", + "description": "Wrangles or column/value fallbacks used after an error. When omitted, the error is logged and execution continues.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "functions", + "required": false, + "label": "Functions", + "ui_type": "json", + "description": "User-defined custom functions available to the nested wrangles.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "variables", + "required": false, + "label": "Variables", + "ui_type": "json", + "description": "Variables available to the nested wrangles.", + "allowed_values": "", + "display_default": "" + }, + { + "name": "retries", + "required": false, + "label": "Retries", + "ui_type": "number", + "description": "Number of times to retry after an error.", + "allowed_values": "", + "display_default": "0" + }, + { + "name": "if", + "required": false, + "label": "If", + "ui_type": "text", + "description": "Condition that determines whether the action runs as a whole.", + "allowed_values": "", + "display_default": "" + } + ], + "access": { + "ai_powered": null, + "requires_account": null, + "requires_subscription": null, + "requires_external_api_key": null + } + } + } + ], + "runtime_without_quasi_registry": [ + { + "runtime_key": "format.price_breaks", + "python_symbol": "wrangles.recipe_wrangles.format.price_breaks", + "docstring_schema_status": "missing" + }, + { + "runtime_key": "maths", + "python_symbol": "wrangles.recipe_wrangles.main.maths", + "docstring_schema_status": "missing" + }, + { + "runtime_key": "recipe", + "python_symbol": "wrangles.recipe_wrangles.main.recipe", + "docstring_schema_status": "available" + }, + { + "runtime_key": "standardize.clean", + "python_symbol": "wrangles.recipe_wrangles.standardize.clean", + "docstring_schema_status": "available" + }, + { + "runtime_key": "standardize.custom", + "python_symbol": "wrangles.recipe_wrangles.standardize.custom", + "docstring_schema_status": "available" + } + ], + "quasi_registry_without_runtime": [], + "normalized_registry_without_quasi": [ + "format.price_breaks", + "maths", + "recipe", + "standardize.clean", + "standardize.custom" + ], + "runtime_without_normalized_registry": [], + "supporting_markdown": [ + { + "source_file": "wrangles-docs/wrangle-docs/ai/ai.md", + "source_sha256": "53be8601bddc5d31d57ac0ac10478267ac4afd2b25350a5a1e7fdbd750b71948" + }, + { + "source_file": "wrangles-docs/wrangle-docs/compare/compare.md", + "source_sha256": "56e2447f70b14b73bc11de20bc039975187f92ea977dfb24019655ab90b3e2f9" + }, + { + "source_file": "wrangles-docs/wrangle-docs/compute/compute.md", + "source_sha256": "309971c405d51e3666806c8ebe8faec45499f599e8fa27ab200535ccb2811b3a" + }, + { + "source_file": "wrangles-docs/wrangle-docs/convert/convert.md", + "source_sha256": "ec27a3d5b9fd5c5bd89a6c373f71b0bba7cc65963cef60443cbd5425f34e7cb0" + }, + { + "source_file": "wrangles-docs/wrangle-docs/create/create.md", + "source_sha256": "d7d6b9e27d82f34736cccff7a0f7449f10dc18b414f45b48c9d6731552519413" + }, + { + "source_file": "wrangles-docs/wrangle-docs/date/date.md", + "source_sha256": "77a783d41ebd1f495f1e05e7f2276ab934648c2d9f69e0b92c4ba483daae5a9c" + }, + { + "source_file": "wrangles-docs/wrangle-docs/extract/extract.md", + "source_sha256": "d2c3f1606f36660195fa6342807db2f5fc68ea7889041126ea53aa52fddb6823" + }, + { + "source_file": "wrangles-docs/wrangle-docs/format/format.md", + "source_sha256": "1a7dc820b43e9147e18c2d276fbea77ef184465f5981a4a0d9524e5792770106" + }, + { + "source_file": "wrangles-docs/wrangle-docs/index.md", + "source_sha256": "86ceb6fca00ba835ee8d99c78339fbaea5e37ceb5e863014fcdb05acb7dcaf2a" + }, + { + "source_file": "wrangles-docs/wrangle-docs/lookup/lookup.md", + "source_sha256": "7f630a74180bebc4b45e233da226ff88c457a3d8caeac084319770099358ad9c" + }, + { + "source_file": "wrangles-docs/wrangle-docs/merge/merge.md", + "source_sha256": "52e95aaf804f243dcff1205f07d99fb0d97d4cf419f2e715b4c91c41cfe0c7f1" + }, + { + "source_file": "wrangles-docs/wrangle-docs/search/search.md", + "source_sha256": "1492c8af3f2f96c494c459211824ff808dd91d8392e476cf3ea0e95528a42e6c" + }, + { + "source_file": "wrangles-docs/wrangle-docs/select/select.md", + "source_sha256": "49385756e393c2aecf93109fc481b4dc09fb5b9a07505637c962f71b840f3a8a" + }, + { + "source_file": "wrangles-docs/wrangle-docs/split/split.md", + "source_sha256": "929966a314ef065fc22dab4ebc87bd583459af1abbc327686d60965f722f66ce" + }, + { + "source_file": "wrangles-docs/wrangle-docs/transform/transform.md", + "source_sha256": "b2169fe57f28396f5b2020cf6e8c797b3d232bfefbe63c3b6938d0c2b1ca7be2" + }, + { + "source_file": "wrangles-docs/wrangle-docs/utility/utility.md", + "source_sha256": "a8a3b2a0293e0abba70a939c52751ca02a4e4b72f84aa1ed8c55332f5477b0b5" + }, + { + "source_file": "wrangles-docs/wrangle-docs/wrangle_template.md", + "source_sha256": "00bc80faa234898ddd806b89c9ff46a09cf7a34f5f0d608d4c957a039351403d" + } + ] +} diff --git a/registry/reports/runtime-reconciliation.md b/registry/reports/runtime-reconciliation.md new file mode 100644 index 0000000..509243a --- /dev/null +++ b/registry/reports/runtime-reconciliation.md @@ -0,0 +1,518 @@ +# Wrangles Registry Source Reconciliation + +Generated file. Do not edit directly. + +- Runtime source: [`7916bf158e8b7e561270a1bea7b808f88956edc4`](https://github.com/wrangleworks/WranglesPY/commit/7916bf158e8b7e561270a1bea7b808f88956edc4) +- Registry version: `0.1.0-pilot` +- Runtime entries: 98 +- Embedded Python schema docstrings: 96 +- Existing quasi-registry records: 93 +- Normalized Registry entries: 98 +- Verified normalized entries: 98 +- Quasi-registry records awaiting normalization: 0 +- Runtime entries without quasi-registry Markdown: 5 +- Quasi-registry records without runtime matches: 0 +- Quasi-registry records without UUIDs: 5 +- Supporting and aggregate Markdown files: 17 + +Embedded Python schema differences and quasi-registry differences are migration +evidence, not runtime contract failures. The first pass resolves runtime facts +from code, then enriches them from embedded schemas and quasi-registry Markdown. +Signature-owned names, required status, defaults, symbols, and common-control +capabilities must reconcile; individual records can be curated in place later. + +## Normalized Registry entries + +| Registry key | Matched runtime key | Status | Runtime issues | Embedded schema differences | +| --- | --- | --- | ---: | ---: | +| `accordion` | `accordion` | verified | 0 | 2 | +| `batch` | `batch` | verified | 0 | 4 | +| `classify` | `classify` | verified | 0 | 1 | +| `clean_whitespaces` | `clean_whitespaces` | verified | 0 | 1 | +| `compare.lists` | `compare.lists` | verified | 0 | 2 | +| `compare.text` | `compare.text` | verified | 0 | 12 | +| `compute.case_when` | `compute.case_when` | verified | 0 | 0 | +| `compute.score_search_results` | `compute.score_search_results` | verified | 0 | 1 | +| `concurrent` | `concurrent` | verified | 0 | 2 | +| `convert.case` | `convert.case` | verified | 0 | 3 | +| `convert.data_type` | `convert.data_type` | verified | 0 | 4 | +| `convert.fraction_to_decimal` | `convert.fraction_to_decimal` | verified | 0 | 2 | +| `convert.from_json` | `convert.from_json` | verified | 0 | 4 | +| `convert.from_yaml` | `convert.from_yaml` | verified | 0 | 2 | +| `convert.to_json` | `convert.to_json` | verified | 0 | 2 | +| `convert.to_yaml` | `convert.to_yaml` | verified | 0 | 3 | +| `copy` | `copy` | verified | 0 | 4 | +| `create.bins` | `create.bins` | verified | 0 | 3 | +| `create.column` | `create.column` | verified | 0 | 1 | +| `create.embeddings` | `create.embeddings` | verified | 0 | 5 | +| `create.guid` | `create.guid` | verified | 0 | 0 | +| `create.hash` | `create.hash` | verified | 0 | 1 | +| `create.index` | `create.index` | verified | 0 | 1 | +| `create.jinja` | `create.jinja` | verified | 0 | 2 | +| `create.uuid` | `create.uuid` | verified | 0 | 0 | +| `date_calculator` | `date_calculator` | verified | 0 | 4 | +| `drop` | `drop` | verified | 0 | 2 | +| `explode` | `explode` | verified | 0 | 0 | +| `extract.address` | `extract.address` | verified | 0 | 3 | +| `extract.ai` | `extract.ai` | verified | 0 | 6 | +| `extract.attributes` | `extract.attributes` | verified | 0 | 4 | +| `extract.brackets` | `extract.brackets` | verified | 0 | 1 | +| `extract.codes` | `extract.codes` | verified | 0 | 2 | +| `extract.custom` | `extract.custom` | verified | 0 | 3 | +| `extract.date_properties` | `extract.date_properties` | verified | 0 | 1 | +| `extract.date_range` | `extract.date_range` | verified | 0 | 1 | +| `extract.html` | `extract.html` | verified | 0 | 4 | +| `extract.properties` | `extract.properties` | verified | 0 | 3 | +| `extract.regex` | `extract.regex` | verified | 0 | 2 | +| `filter` | `filter` | verified | 0 | 14 | +| `format.dates` | `format.dates` | verified | 0 | 2 | +| `format.pad` | `format.pad` | verified | 0 | 5 | +| `format.prefix` | `format.prefix` | verified | 0 | 3 | +| `format.price_breaks` | `format.price_breaks` | verified | 0 | 1 | +| `format.remove_duplicates` | `format.remove_duplicates` | verified | 0 | 1 | +| `format.significant_figures` | `format.significant_figures` | verified | 0 | 2 | +| `format.suffix` | `format.suffix` | verified | 0 | 3 | +| `format.trim` | `format.trim` | verified | 0 | 1 | +| `generate.ai` | `generate.ai` | verified | 0 | 4 | +| `huggingface` | `huggingface` | verified | 0 | 3 | +| `log` | `log` | verified | 0 | 5 | +| `lookup` | `lookup` | verified | 0 | 6 | +| `math` | `math` | verified | 0 | 1 | +| `maths` | `maths` | verified | 0 | 1 | +| `matrix` | `matrix` | verified | 0 | 1 | +| `merge.coalesce` | `merge.coalesce` | verified | 0 | 2 | +| `merge.concatenate` | `merge.concatenate` | verified | 0 | 3 | +| `merge.dictionaries` | `merge.dictionaries` | verified | 0 | 1 | +| `merge.key_value_pairs` | `merge.key_value_pairs` | verified | 0 | 1 | +| `merge.lists` | `merge.lists` | verified | 0 | 0 | +| `merge.to_dict` | `merge.to_dict` | verified | 0 | 1 | +| `merge.to_list` | `merge.to_list` | verified | 0 | 1 | +| `python` | `python` | verified | 0 | 2 | +| `recipe` | `recipe` | verified | 0 | 6 | +| `reindex` | `reindex` | verified | 0 | 4 | +| `remove_words` | `remove_words` | verified | 0 | 3 | +| `rename` | `rename` | verified | 0 | 4 | +| `replace` | `replace` | verified | 0 | 1 | +| `round` | `round` | verified | 0 | 2 | +| `search.find_links` | `search.find_links` | verified | 0 | 8 | +| `search.retrieve_link_content` | `search.retrieve_link_content` | verified | 0 | 7 | +| `select.columns` | `select.columns` | verified | 0 | 0 | +| `select.dictionary_element` | `select.dictionary_element` | verified | 0 | 2 | +| `select.element` | `select.element` | verified | 0 | 2 | +| `select.group_by` | `select.group_by` | verified | 0 | 1 | +| `select.head` | `select.head` | verified | 0 | 1 | +| `select.highest_confidence` | `select.highest_confidence` | verified | 0 | 1 | +| `select.left` | `select.left` | verified | 0 | 1 | +| `select.length` | `select.length` | verified | 0 | 2 | +| `select.list_element` | `select.list_element` | verified | 0 | 2 | +| `select.right` | `select.right` | verified | 0 | 1 | +| `select.sample` | `select.sample` | verified | 0 | 1 | +| `select.substring` | `select.substring` | verified | 0 | 5 | +| `select.tail` | `select.tail` | verified | 0 | 1 | +| `select.threshold` | `select.threshold` | verified | 0 | 0 | +| `similarity` | `similarity` | verified | 0 | 0 | +| `sort` | `sort` | verified | 0 | 2 | +| `split.dictionary` | `split.dictionary` | verified | 0 | 2 | +| `split.list` | `split.list` | verified | 0 | 1 | +| `split.text` | `split.text` | verified | 0 | 4 | +| `split.tokenize` | `split.tokenize` | verified | 0 | 1 | +| `sql` | `sql` | verified | 0 | 3 | +| `standardize` | `standardize` | verified | 0 | 3 | +| `standardize.clean` | `standardize.clean` | verified | 0 | 12 | +| `standardize.custom` | `standardize.custom` | verified | 0 | 3 | +| `translate` | `translate` | verified | 0 | 1 | +| `transpose` | `transpose` | verified | 0 | 1 | +| `try` | `try` | verified | 0 | 2 | + +## Embedded Python schema differences + +| Registry key | Difference | Parameter | Detail | +| --- | --- | --- | --- | +| `accordion` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `accordion` | schema_constraint_difference | `propagate` | See the JSON report for both schema fragments. | +| `batch` | schema_constraint_difference | `batch_size` | See the JSON report for both schema fragments. | +| `batch` | schema_constraint_difference | `on_error` | See the JSON report for both schema fragments. | +| `batch` | schema_constraint_difference | `timeout` | See the JSON report for both schema fragments. | +| `batch` | registry_only_parameter | `use_multiprocessing` | See the JSON report for both schema fragments. | +| `classify` | docstring_allows_additional_properties | — | The curated Registry contract rejects undocumented parameters. | +| `clean_whitespaces` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `compare.lists` | docstring_required_mismatch | `method` | runtime required=false; docstring required=true | +| `compare.lists` | docstring_allows_additional_properties | — | The curated Registry contract rejects undocumented parameters. | +| `compare.text` | registry_only_parameter | `all_empty` | See the JSON report for both schema fragments. | +| `compare.text` | registry_only_parameter | `case_sensitive` | See the JSON report for both schema fragments. | +| `compare.text` | registry_only_parameter | `char` | See the JSON report for both schema fragments. | +| `compare.text` | registry_only_parameter | `decimal_places` | See the JSON report for both schema fragments. | +| `compare.text` | registry_only_parameter | `empty_a` | See the JSON report for both schema fragments. | +| `compare.text` | registry_only_parameter | `empty_b` | See the JSON report for both schema fragments. | +| `compare.text` | registry_only_parameter | `exact_match` | See the JSON report for both schema fragments. | +| `compare.text` | registry_only_parameter | `include_ratio` | See the JSON report for both schema fragments. | +| `compare.text` | docstring_required_mismatch | `method` | runtime required=false; docstring required=true | +| `compare.text` | registry_only_parameter | `metric` | See the JSON report for both schema fragments. | +| `compare.text` | registry_only_parameter | `non_match_char` | See the JSON report for both schema fragments. | +| `compare.text` | docstring_allows_additional_properties | — | The curated Registry contract rejects undocumented parameters. | +| `compute.score_search_results` | schema_constraint_difference | `blacklist_keywords` | See the JSON report for both schema fragments. | +| `concurrent` | registry_only_parameter | `use_multiprocessing` | See the JSON report for both schema fragments. | +| `concurrent` | schema_constraint_difference | `wrangles` | See the JSON report for both schema fragments. | +| `convert.case` | docstring_required_mismatch | `case` | runtime required=false; docstring required=true | +| `convert.case` | schema_constraint_difference | `input` | See the JSON report for both schema fragments. | +| `convert.case` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `convert.data_type` | docstring_required_mismatch | `data_type` | runtime required=false; docstring required=true | +| `convert.data_type` | schema_constraint_difference | `default` | See the JSON report for both schema fragments. | +| `convert.data_type` | schema_constraint_difference | `input` | See the JSON report for both schema fragments. | +| `convert.data_type` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `convert.fraction_to_decimal` | schema_constraint_difference | `decimals` | See the JSON report for both schema fragments. | +| `convert.fraction_to_decimal` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `convert.from_json` | schema_constraint_difference | `default` | See the JSON report for both schema fragments. | +| `convert.from_json` | schema_constraint_difference | `input` | See the JSON report for both schema fragments. | +| `convert.from_json` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `convert.from_json` | docstring_allows_additional_properties | — | The curated Registry contract rejects undocumented parameters. | +| `convert.from_yaml` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `convert.from_yaml` | docstring_allows_additional_properties | — | The curated Registry contract rejects undocumented parameters. | +| `convert.to_json` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `convert.to_json` | docstring_allows_additional_properties | — | The curated Registry contract rejects undocumented parameters. | +| `convert.to_yaml` | registry_only_parameter | `allow_unicode` | See the JSON report for both schema fragments. | +| `convert.to_yaml` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `convert.to_yaml` | docstring_allows_additional_properties | — | The curated Registry contract rejects undocumented parameters. | +| `copy` | docstring_required_mismatch | `input` | runtime required=false; docstring required=true | +| `copy` | schema_constraint_difference | `input` | See the JSON report for both schema fragments. | +| `copy` | docstring_required_mismatch | `output` | runtime required=false; docstring required=true | +| `copy` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `create.bins` | schema_constraint_difference | `input` | See the JSON report for both schema fragments. | +| `create.bins` | schema_constraint_difference | `labels` | See the JSON report for both schema fragments. | +| `create.bins` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `create.column` | schema_constraint_difference | `value` | See the JSON report for both schema fragments. | +| `create.embeddings` | schema_constraint_difference | `input` | See the JSON report for both schema fragments. | +| `create.embeddings` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `create.embeddings` | schema_constraint_difference | `provider` | See the JSON report for both schema fragments. | +| `create.embeddings` | schema_constraint_difference | `task` | See the JSON report for both schema fragments. | +| `create.embeddings` | docstring_allows_additional_properties | — | The curated Registry contract rejects undocumented parameters. | +| `create.hash` | docstring_required_mismatch | `output` | runtime required=true; docstring required=false | +| `create.index` | schema_constraint_difference | `by` | See the JSON report for both schema fragments. | +| `create.jinja` | schema_constraint_difference | `input` | See the JSON report for both schema fragments. | +| `create.jinja` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `date_calculator` | schema_constraint_difference | `input` | See the JSON report for both schema fragments. | +| `date_calculator` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `date_calculator` | schema_constraint_difference | `time_unit` | See the JSON report for both schema fragments. | +| `date_calculator` | schema_constraint_difference | `time_value` | See the JSON report for both schema fragments. | +| `drop` | schema_constraint_difference | `columns` | See the JSON report for both schema fragments. | +| `drop` | docstring_allows_additional_properties | — | The curated Registry contract rejects undocumented parameters. | +| `extract.address` | docstring_required_mismatch | `dataType` | runtime required=true; docstring required=false | +| `extract.address` | schema_constraint_difference | `output_format` | See the JSON report for both schema fragments. | +| `extract.address` | docstring_allows_additional_properties | — | The curated Registry contract rejects undocumented parameters. | +| `extract.ai` | schema_constraint_difference | `input` | See the JSON report for both schema fragments. | +| `extract.ai` | schema_constraint_difference | `instructions` | See the JSON report for both schema fragments. | +| `extract.ai` | schema_constraint_difference | `model_id` | See the JSON report for both schema fragments. | +| `extract.ai` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `extract.ai` | schema_constraint_difference | `output_format` | See the JSON report for both schema fragments. | +| `extract.ai` | schema_constraint_difference | `record_examples` | See the JSON report for both schema fragments. | +| `extract.attributes` | schema_constraint_difference | `attribute_type` | See the JSON report for both schema fragments. | +| `extract.attributes` | schema_constraint_difference | `desired_unit` | See the JSON report for both schema fragments. | +| `extract.attributes` | schema_constraint_difference | `output_format` | See the JSON report for both schema fragments. | +| `extract.attributes` | docstring_allows_additional_properties | — | The curated Registry contract rejects undocumented parameters. | +| `extract.brackets` | schema_constraint_difference | `output_format` | See the JSON report for both schema fragments. | +| `extract.codes` | schema_constraint_difference | `output_format` | See the JSON report for both schema fragments. | +| `extract.codes` | docstring_allows_additional_properties | — | The curated Registry contract rejects undocumented parameters. | +| `extract.custom` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `extract.custom` | schema_constraint_difference | `output_format` | See the JSON report for both schema fragments. | +| `extract.custom` | docstring_allows_additional_properties | — | The curated Registry contract rejects undocumented parameters. | +| `extract.date_properties` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `extract.date_range` | docstring_required_mismatch | `range` | runtime required=false; docstring required=true | +| `extract.html` | docstring_required_mismatch | `output` | runtime required=false; docstring required=true | +| `extract.html` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `extract.html` | schema_constraint_difference | `output_format` | See the JSON report for both schema fragments. | +| `extract.html` | docstring_allows_additional_properties | — | The curated Registry contract rejects undocumented parameters. | +| `extract.properties` | schema_constraint_difference | `output_format` | See the JSON report for both schema fragments. | +| `extract.properties` | schema_constraint_difference | `property_type` | See the JSON report for both schema fragments. | +| `extract.properties` | docstring_allows_additional_properties | — | The curated Registry contract rejects undocumented parameters. | +| `extract.regex` | schema_constraint_difference | `output_format` | See the JSON report for both schema fragments. | +| `extract.regex` | schema_constraint_difference | `output_pattern` | See the JSON report for both schema fragments. | +| `filter` | schema_constraint_difference | `between` | See the JSON report for both schema fragments. | +| `filter` | schema_constraint_difference | `contains` | See the JSON report for both schema fragments. | +| `filter` | schema_constraint_difference | `equal` | See the JSON report for both schema fragments. | +| `filter` | schema_constraint_difference | `greater_than` | See the JSON report for both schema fragments. | +| `filter` | schema_constraint_difference | `greater_than_equal_to` | See the JSON report for both schema fragments. | +| `filter` | schema_constraint_difference | `is_in` | See the JSON report for both schema fragments. | +| `filter` | schema_constraint_difference | `is_null` | See the JSON report for both schema fragments. | +| `filter` | schema_constraint_difference | `less_than` | See the JSON report for both schema fragments. | +| `filter` | schema_constraint_difference | `less_than_equal_to` | See the JSON report for both schema fragments. | +| `filter` | schema_constraint_difference | `not_contains` | See the JSON report for both schema fragments. | +| `filter` | schema_constraint_difference | `not_equal` | See the JSON report for both schema fragments. | +| `filter` | schema_constraint_difference | `not_in` | See the JSON report for both schema fragments. | +| `filter` | docstring_only_parameter | `where` | See the JSON report for both schema fragments. | +| `filter` | docstring_only_parameter | `where_params` | See the JSON report for both schema fragments. | +| `format.dates` | schema_constraint_difference | `format` | See the JSON report for both schema fragments. | +| `format.dates` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `format.pad` | schema_constraint_difference | `char` | See the JSON report for both schema fragments. | +| `format.pad` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `format.pad` | schema_constraint_difference | `pad_length` | See the JSON report for both schema fragments. | +| `format.pad` | schema_constraint_difference | `side` | See the JSON report for both schema fragments. | +| `format.pad` | schema_constraint_difference | `skip_empty` | See the JSON report for both schema fragments. | +| `format.prefix` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `format.prefix` | schema_constraint_difference | `skip_empty` | See the JSON report for both schema fragments. | +| `format.prefix` | schema_constraint_difference | `value` | See the JSON report for both schema fragments. | +| `format.price_breaks` | missing_docstring_schema | — | The callable is present but has no embedded Python schema docstring. | +| `format.remove_duplicates` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `format.significant_figures` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `format.significant_figures` | schema_constraint_difference | `significant_figures` | See the JSON report for both schema fragments. | +| `format.suffix` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `format.suffix` | schema_constraint_difference | `skip_empty` | See the JSON report for both schema fragments. | +| `format.suffix` | schema_constraint_difference | `value` | See the JSON report for both schema fragments. | +| `format.trim` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `generate.ai` | schema_constraint_difference | `input` | See the JSON report for both schema fragments. | +| `generate.ai` | schema_constraint_difference | `messages` | See the JSON report for both schema fragments. | +| `generate.ai` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `generate.ai` | schema_constraint_difference | `reasoning` | See the JSON report for both schema fragments. | +| `huggingface` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `huggingface` | schema_constraint_difference | `parameters` | See the JSON report for both schema fragments. | +| `huggingface` | docstring_allows_additional_properties | — | The curated Registry contract rejects undocumented parameters. | +| `log` | schema_constraint_difference | `columns` | See the JSON report for both schema fragments. | +| `log` | schema_constraint_difference | `info` | See the JSON report for both schema fragments. | +| `log` | schema_constraint_difference | `log_data` | See the JSON report for both schema fragments. | +| `log` | schema_constraint_difference | `warning` | See the JSON report for both schema fragments. | +| `log` | schema_constraint_difference | `write` | See the JSON report for both schema fragments. | +| `lookup` | schema_constraint_difference | `input` | See the JSON report for both schema fragments. | +| `lookup` | docstring_required_mismatch | `model_id` | runtime required=false; docstring required=true | +| `lookup` | schema_constraint_difference | `model_id` | See the JSON report for both schema fragments. | +| `lookup` | schema_constraint_difference | `n` | See the JSON report for both schema fragments. | +| `lookup` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `lookup` | docstring_allows_additional_properties | — | The curated Registry contract rejects undocumented parameters. | +| `math` | schema_constraint_difference | `input` | See the JSON report for both schema fragments. | +| `maths` | missing_docstring_schema | — | The callable is present but has no embedded Python schema docstring. | +| `matrix` | docstring_allows_additional_properties | — | The curated Registry contract rejects undocumented parameters. | +| `merge.coalesce` | schema_constraint_difference | `input` | See the JSON report for both schema fragments. | +| `merge.coalesce` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `merge.concatenate` | docstring_required_mismatch | `char` | runtime required=false; docstring required=true | +| `merge.concatenate` | schema_constraint_difference | `input` | See the JSON report for both schema fragments. | +| `merge.concatenate` | schema_constraint_difference | `skip_empty` | See the JSON report for both schema fragments. | +| `merge.dictionaries` | schema_constraint_difference | `skip_empty` | See the JSON report for both schema fragments. | +| `merge.key_value_pairs` | schema_constraint_difference | `skip_empty` | See the JSON report for both schema fragments. | +| `merge.to_dict` | schema_constraint_difference | `input` | See the JSON report for both schema fragments. | +| `merge.to_list` | schema_constraint_difference | `input` | See the JSON report for both schema fragments. | +| `python` | schema_constraint_difference | `input` | See the JSON report for both schema fragments. | +| `python` | docstring_allows_additional_properties | — | The curated Registry contract rejects undocumented parameters. | +| `recipe` | registry_only_parameter | `input` | See the JSON report for both schema fragments. | +| `recipe` | docstring_required_mismatch | `name` | runtime required=false; docstring required=true | +| `recipe` | schema_constraint_difference | `name` | See the JSON report for both schema fragments. | +| `recipe` | registry_only_parameter | `output` | See the JSON report for both schema fragments. | +| `recipe` | schema_constraint_difference | `variables` | See the JSON report for both schema fragments. | +| `recipe` | docstring_allows_additional_properties | — | The curated Registry contract rejects undocumented parameters. | +| `reindex` | schema_constraint_difference | `axis` | See the JSON report for both schema fragments. | +| `reindex` | schema_constraint_difference | `columns` | See the JSON report for both schema fragments. | +| `reindex` | schema_constraint_difference | `index` | See the JSON report for both schema fragments. | +| `reindex` | schema_constraint_difference | `labels` | See the JSON report for both schema fragments. | +| `remove_words` | docstring_required_mismatch | `output` | runtime required=false; docstring required=true | +| `remove_words` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `remove_words` | schema_constraint_difference | `to_remove` | See the JSON report for both schema fragments. | +| `rename` | schema_constraint_difference | `input` | See the JSON report for both schema fragments. | +| `rename` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `rename` | schema_constraint_difference | `wrangles` | See the JSON report for both schema fragments. | +| `rename` | docstring_allows_additional_properties | — | The curated Registry contract rejects undocumented parameters. | +| `replace` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `round` | schema_constraint_difference | `decimals` | See the JSON report for both schema fragments. | +| `round` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `search.find_links` | schema_constraint_difference | `api_key` | See the JSON report for both schema fragments. | +| `search.find_links` | schema_constraint_difference | `client` | See the JSON report for both schema fragments. | +| `search.find_links` | schema_constraint_difference | `country` | See the JSON report for both schema fragments. | +| `search.find_links` | schema_constraint_difference | `language` | See the JSON report for both schema fragments. | +| `search.find_links` | schema_constraint_difference | `n_results` | See the JSON report for both schema fragments. | +| `search.find_links` | docstring_required_mismatch | `output` | runtime required=false; docstring required=true | +| `search.find_links` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `search.find_links` | schema_constraint_difference | `threads` | See the JSON report for both schema fragments. | +| `search.retrieve_link_content` | schema_constraint_difference | `api_key` | See the JSON report for both schema fragments. | +| `search.retrieve_link_content` | schema_constraint_difference | `client` | See the JSON report for both schema fragments. | +| `search.retrieve_link_content` | docstring_required_mismatch | `output` | runtime required=false; docstring required=true | +| `search.retrieve_link_content` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `search.retrieve_link_content` | schema_constraint_difference | `output_format` | See the JSON report for both schema fragments. | +| `search.retrieve_link_content` | schema_constraint_difference | `prompt` | See the JSON report for both schema fragments. | +| `search.retrieve_link_content` | schema_constraint_difference | `threads` | See the JSON report for both schema fragments. | +| `select.dictionary_element` | schema_constraint_difference | `element` | See the JSON report for both schema fragments. | +| `select.dictionary_element` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `select.element` | schema_constraint_difference | `default` | See the JSON report for both schema fragments. | +| `select.element` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `select.group_by` | docstring_allows_additional_properties | — | The curated Registry contract rejects undocumented parameters. | +| `select.head` | docstring_allows_additional_properties | — | The curated Registry contract rejects undocumented parameters. | +| `select.highest_confidence` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `select.left` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `select.length` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `select.length` | docstring_allows_additional_properties | — | The curated Registry contract rejects undocumented parameters. | +| `select.list_element` | docstring_required_mismatch | `element` | runtime required=false; docstring required=true | +| `select.list_element` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `select.right` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `select.sample` | docstring_allows_additional_properties | — | The curated Registry contract rejects undocumented parameters. | +| `select.substring` | docstring_required_mismatch | `length` | runtime required=false; docstring required=true | +| `select.substring` | schema_constraint_difference | `length` | See the JSON report for both schema fragments. | +| `select.substring` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `select.substring` | docstring_required_mismatch | `start` | runtime required=false; docstring required=true | +| `select.substring` | schema_constraint_difference | `start` | See the JSON report for both schema fragments. | +| `select.tail` | docstring_allows_additional_properties | — | The curated Registry contract rejects undocumented parameters. | +| `sort` | registry_only_parameter | `ignore_index` | See the JSON report for both schema fragments. | +| `sort` | docstring_allows_additional_properties | — | The curated Registry contract rejects undocumented parameters. | +| `split.dictionary` | schema_constraint_difference | `default` | See the JSON report for both schema fragments. | +| `split.dictionary` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `split.list` | schema_constraint_difference | `input` | See the JSON report for both schema fragments. | +| `split.text` | schema_constraint_difference | `element` | See the JSON report for both schema fragments. | +| `split.text` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `split.text` | schema_constraint_difference | `pad` | See the JSON report for both schema fragments. | +| `split.text` | schema_constraint_difference | `skip_empty` | See the JSON report for both schema fragments. | +| `split.tokenize` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `sql` | schema_constraint_difference | `params` | See the JSON report for both schema fragments. | +| `sql` | registry_only_parameter | `preserve_data_types` | See the JSON report for both schema fragments. | +| `sql` | registry_only_parameter | `preserve_index` | See the JSON report for both schema fragments. | +| `standardize` | docstring_required_mismatch | `model_id` | runtime required=true; docstring required=false | +| `standardize` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `standardize` | docstring_allows_additional_properties | — | The curated Registry contract rejects undocumented parameters. | +| `standardize.clean` | schema_constraint_difference | `collapse_whitespace` | See the JSON report for both schema fragments. | +| `standardize.clean` | schema_constraint_difference | `fix_character_width` | See the JSON report for both schema fragments. | +| `standardize.clean` | schema_constraint_difference | `fix_encoding` | See the JSON report for both schema fragments. | +| `standardize.clean` | schema_constraint_difference | `normalization` | See the JSON report for both schema fragments. | +| `standardize.clean` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `standardize.clean` | schema_constraint_difference | `preserve_line_breaks` | See the JSON report for both schema fragments. | +| `standardize.clean` | schema_constraint_difference | `remove_control_chars` | See the JSON report for both schema fragments. | +| `standardize.clean` | schema_constraint_difference | `separator` | See the JSON report for both schema fragments. | +| `standardize.clean` | schema_constraint_difference | `trim` | See the JSON report for both schema fragments. | +| `standardize.clean` | schema_constraint_difference | `uncurl_quotes` | See the JSON report for both schema fragments. | +| `standardize.clean` | schema_constraint_difference | `unescape_html` | See the JSON report for both schema fragments. | +| `standardize.clean` | docstring_allows_additional_properties | — | The curated Registry contract rejects undocumented parameters. | +| `standardize.custom` | docstring_required_mismatch | `model_id` | runtime required=true; docstring required=false | +| `standardize.custom` | schema_constraint_difference | `output` | See the JSON report for both schema fragments. | +| `standardize.custom` | docstring_allows_additional_properties | — | The curated Registry contract rejects undocumented parameters. | +| `translate` | registry_only_parameter | `case` | See the JSON report for both schema fragments. | +| `transpose` | schema_constraint_difference | `header_column` | See the JSON report for both schema fragments. | +| `try` | schema_constraint_difference | `except` | See the JSON report for both schema fragments. | +| `try` | docstring_allows_additional_properties | — | The curated Registry contract rejects undocumented parameters. | + +## Existing quasi-registry inventory + +Every per-wrangle `_sources/*.md` record is included below. Display defaults +are retained as migration content and are not treated as Python runtime defaults. +The JSON report records a SHA-256 hash of every source file so changes anywhere +in the quasi-registry remain reviewable. + +| Wrangle key | Source Markdown | UUID | Runtime | Normalization | Runtime parameter differences | Embedded schema differences | +| --- | --- | --- | --- | --- | ---: | ---: | +| `accordion` | `wrangles-docs/wrangle-docs/utility/_sources/accordion.md` | missing | matched | matched | 1 | 1 | +| `batch` | `wrangles-docs/wrangle-docs/utility/_sources/batch.md` | missing | matched | matched | 5 | 4 | +| `classify` | `wrangles-docs/wrangle-docs/ai/_sources/classify.md` | `06669ef8-cdd1-42f7-8078-98e0b7a42c30` | matched | matched | 0 | 0 | +| `clean_whitespaces` | `wrangles-docs/wrangle-docs/format/_sources/clean-whitespaces.md` | `e36e15c4-f0ad-43f8-8555-ef683a8ab892` | matched | matched | 3 | 3 | +| `compare.lists` | `wrangles-docs/wrangle-docs/compare/_sources/lists.md` | `a393225e-7ccf-4708-83f8-d5abd6ba9b1e` | matched | matched | 4 | 3 | +| `compare.text` | `wrangles-docs/wrangle-docs/compare/_sources/text.md` | `31905b74-ce58-45cd-8add-821cc04ab946` | matched | matched | 4 | 13 | +| `compute.case_when` | `wrangles-docs/wrangle-docs/compute/_sources/case-when.md` | `9a9662e4-53d1-4932-8adf-bc3e7aa364ad` | matched | matched | 3 | 3 | +| `compute.score_search_results` | `wrangles-docs/wrangle-docs/compute/_sources/score-search-results.md` | `313a8ec0-cf13-4956-8d3b-5362b8641d0f` | matched | matched | 3 | 3 | +| `concurrent` | `wrangles-docs/wrangle-docs/utility/_sources/concurrent.md` | missing | matched | matched | 4 | 3 | +| `convert.case` | `wrangles-docs/wrangle-docs/convert/_sources/case.md` | `12ff4120-3613-4801-8653-99c793477fbc` | matched | matched | 1 | 0 | +| `convert.data_type` | `wrangles-docs/wrangle-docs/convert/_sources/data-type.md` | `52384f01-7164-404f-8615-063e7677a588` | matched | matched | 1 | 0 | +| `convert.fraction_to_decimal` | `wrangles-docs/wrangle-docs/convert/_sources/fraction-to-decimal.md` | `7c55752e-70ab-4809-8298-c59436127457` | matched | matched | 0 | 0 | +| `convert.from_json` | `wrangles-docs/wrangle-docs/convert/_sources/from-json.md` | `e370dfcf-b0fe-4c48-8a52-6f34c47e7978` | matched | matched | 0 | 0 | +| `convert.from_yaml` | `wrangles-docs/wrangle-docs/convert/_sources/from-yaml.md` | `b1c20004-5f80-41c2-84d2-2d4601a033b5` | matched | matched | 2 | 2 | +| `convert.to_json` | `wrangles-docs/wrangle-docs/convert/_sources/to-json.md` | `94e54eb7-2b8c-4047-89d0-fb5d16baf396` | matched | matched | 0 | 0 | +| `convert.to_yaml` | `wrangles-docs/wrangle-docs/convert/_sources/to-yaml.md` | `4cd6252f-ce47-4a9d-8272-3d87e875b72a` | matched | matched | 1 | 0 | +| `copy` | `wrangles-docs/wrangle-docs/transform/_sources/copy.md` | `b002fbdc-92c0-4347-889d-0f4bfeec99fa` | matched | matched | 2 | 0 | +| `create.bins` | `wrangles-docs/wrangle-docs/create/_sources/bins.md` | `232e3ba0-4735-4934-88aa-0163181abb3f` | matched | matched | 0 | 0 | +| `create.column` | `wrangles-docs/wrangle-docs/create/_sources/column.md` | `5a18e2c8-ec7c-45f5-88fd-bb5c358a8b40` | matched | matched | 2 | 2 | +| `create.embeddings` | `wrangles-docs/wrangle-docs/create/_sources/embeddings.md` | `e3518afd-a819-40ec-8b49-eb25690220c1` | matched | matched | 4 | 4 | +| `create.guid` | `wrangles-docs/wrangle-docs/create/_sources/guid.md` | `cf3aaab2-3d5b-4c9b-826e-7af7510521c9` | matched | matched | 0 | 0 | +| `create.hash` | `wrangles-docs/wrangle-docs/create/_sources/hash.md` | `11e8fc13-00d2-4779-8d87-6288b07de7e7` | matched | matched | 0 | 1 | +| `create.index` | `wrangles-docs/wrangle-docs/create/_sources/index.md` | `0a4909ca-6e14-4da7-8a70-a7fd106d6944` | matched | matched | 0 | 0 | +| `create.jinja` | `wrangles-docs/wrangle-docs/create/_sources/jinja.md` | `10fc6709-16d4-4eab-8f56-6cb5d170ea66` | matched | matched | 0 | 0 | +| `create.uuid` | `wrangles-docs/wrangle-docs/create/_sources/uuid.md` | `c376f3ff-2283-4c4c-8d7f-70db6f53ed19` | matched | matched | 0 | 0 | +| `date_calculator` | `wrangles-docs/wrangle-docs/date/_sources/date-calculator.md` | `19cfeb4f-02af-4ab2-895c-0ff2bb5cce19` | matched | matched | 0 | 0 | +| `drop` | `wrangles-docs/wrangle-docs/select/_sources/drop.md` | `363bffbf-397e-4975-8382-e9efa5e9eed6` | matched | matched | 0 | 0 | +| `explode` | `wrangles-docs/wrangle-docs/split/_sources/explode.md` | `4e4b13ac-8d50-4b2c-85c8-2c31de1e817d` | matched | matched | 2 | 2 | +| `extract.address` | `wrangles-docs/wrangle-docs/extract/_sources/address.md` | `44153f95-4581-4cee-898e-b3b4714045fd` | matched | matched | 2 | 3 | +| `extract.ai` | `wrangles-docs/wrangle-docs/extract/_sources/ai.md` | `d9f89b00-fda3-4f4c-826c-6417b9390607` | matched | matched | 15 | 15 | +| `extract.attributes` | `wrangles-docs/wrangle-docs/extract/_sources/attributes.md` | `03ccedef-c938-41f1-8980-280f1a91542e` | matched | matched | 2 | 2 | +| `extract.brackets` | `wrangles-docs/wrangle-docs/extract/_sources/brackets.md` | `9b4c15fa-2aaa-40c8-8834-6e835760bee5` | matched | matched | 3 | 3 | +| `extract.codes` | `wrangles-docs/wrangle-docs/extract/_sources/codes.md` | `da591387-0fca-4842-8bcb-d19f561f0292` | matched | matched | 3 | 3 | +| `extract.custom` | `wrangles-docs/wrangle-docs/extract/_sources/custom.md` | `e8e96b76-86bf-41dc-8d16-825dcff9688b` | matched | matched | 3 | 3 | +| `extract.date_properties` | `wrangles-docs/wrangle-docs/extract/_sources/date-properties.md` | `a346de62-93cd-44ba-8d30-a6305629c6d7` | matched | matched | 0 | 0 | +| `extract.date_range` | `wrangles-docs/wrangle-docs/extract/_sources/date-range.md` | `9cebfa6f-a524-4aec-84a7-02d77b792843` | matched | matched | 0 | 1 | +| `extract.html` | `wrangles-docs/wrangle-docs/extract/_sources/html.md` | `728fc87a-a20d-4efa-833a-612e0b5eadc3` | matched | matched | 4 | 3 | +| `extract.properties` | `wrangles-docs/wrangle-docs/extract/_sources/properties.md` | `23bbdb86-fd13-4b78-8fff-a7a76769ab63` | matched | matched | 2 | 2 | +| `extract.regex` | `wrangles-docs/wrangle-docs/extract/_sources/regex.md` | `9aa0253a-4b70-4737-832c-964e15967289` | matched | matched | 2 | 2 | +| `filter` | `wrangles-docs/wrangle-docs/select/_sources/filter.md` | `e3242acf-d204-433f-8373-205b77481131` | matched | matched | 0 | 0 | +| `format.dates` | `wrangles-docs/wrangle-docs/format/_sources/dates.md` | `a3c15135-4f7a-4659-83fd-f657afa603c9` | matched | matched | 0 | 0 | +| `format.pad` | `wrangles-docs/wrangle-docs/format/_sources/pad.md` | `76c19378-38f4-45aa-85d1-3cdf8f8aae29` | matched | matched | 0 | 0 | +| `format.prefix` | `wrangles-docs/wrangle-docs/format/_sources/prefix.md` | `c12f99b9-2363-4da7-8405-7c73b87906e5` | matched | matched | 0 | 0 | +| `format.remove_duplicates` | `wrangles-docs/wrangle-docs/format/_sources/remove-duplicates.md` | `283b9e78-b2b2-43d0-844f-9842c33120aa` | matched | matched | 0 | 0 | +| `format.significant_figures` | `wrangles-docs/wrangle-docs/format/_sources/significant-figures.md` | `a359f72a-5250-4dd8-84f6-8a8173bee0f6` | matched | matched | 0 | 0 | +| `format.suffix` | `wrangles-docs/wrangle-docs/format/_sources/suffix.md` | `8d127060-ba2d-4934-897f-07662e01e40b` | matched | matched | 0 | 0 | +| `format.trim` | `wrangles-docs/wrangle-docs/format/_sources/trim.md` | `af16b3c1-c230-4868-8ebe-f574904a0c76` | matched | matched | 0 | 0 | +| `generate.ai` | `wrangles-docs/wrangle-docs/ai/_sources/ai.md` | `12c31c6c-cade-484d-84ba-7f302bf6af52` | matched | matched | 3 | 3 | +| `huggingface` | `wrangles-docs/wrangle-docs/ai/_sources/huggingface.md` | `ae12cf20-4934-428f-84a9-a6898cb7ffe0` | matched | matched | 3 | 3 | +| `log` | `wrangles-docs/wrangle-docs/utility/_sources/log.md` | `6177808e-aa2d-4d0b-8385-858b16948a5d` | matched | matched | 0 | 0 | +| `lookup` | `wrangles-docs/wrangle-docs/lookup/_sources/lookup.md` | `b3339193-d1cc-4c89-8ed6-901efa6d81be` | matched | matched | 2 | 1 | +| `math` | `wrangles-docs/wrangle-docs/compute/_sources/math.md` | `494b11ad-00c1-4748-8b93-6bec982f4fec` | matched | matched | 0 | 0 | +| `matrix` | `wrangles-docs/wrangle-docs/utility/_sources/matrix.md` | missing | matched | matched | 3 | 3 | +| `merge.coalesce` | `wrangles-docs/wrangle-docs/merge/_sources/coalesce.md` | `25c1a60d-fa48-4b9a-8c03-0921d5b31049` | matched | matched | 1 | 1 | +| `merge.concatenate` | `wrangles-docs/wrangle-docs/merge/_sources/concatenate.md` | `6ff76728-e1f6-4d3d-8946-6aa3b7524b3f` | matched | matched | 0 | 1 | +| `merge.dictionaries` | `wrangles-docs/wrangle-docs/merge/_sources/dictionaries.md` | `93e27737-e966-4ba9-8777-4e96724ebfc4` | matched | matched | 0 | 0 | +| `merge.key_value_pairs` | `wrangles-docs/wrangle-docs/merge/_sources/key-value-pairs.md` | `8a2cd37c-8ef7-4b05-8264-36512f5dd837` | matched | matched | 0 | 0 | +| `merge.lists` | `wrangles-docs/wrangle-docs/merge/_sources/lists.md` | `d9978f00-b3d4-4583-884e-a53b98a43e9a` | matched | matched | 0 | 0 | +| `merge.to_dict` | `wrangles-docs/wrangle-docs/merge/_sources/to-dict.md` | `9b869210-0d89-403b-8409-7cecdb5f9c7c` | matched | matched | 0 | 0 | +| `merge.to_list` | `wrangles-docs/wrangle-docs/merge/_sources/to-list.md` | `d5300fe7-c8a4-4a41-8f12-f2c1698678cc` | matched | matched | 0 | 0 | +| `python` | `wrangles-docs/wrangle-docs/compute/_sources/python.md` | `c0398a11-7731-4e47-8df0-b07eea0b1d6c` | matched | matched | 2 | 2 | +| `reindex` | `wrangles-docs/wrangle-docs/transform/_sources/reindex.md` | `def87df8-72da-4e34-83c1-1fde25126257` | matched | matched | 0 | 0 | +| `remove_words` | `wrangles-docs/wrangle-docs/format/_sources/remove-words.md` | `543b96c3-f354-48be-8046-bf0cb9fbaf56` | matched | matched | 0 | 1 | +| `rename` | `wrangles-docs/wrangle-docs/transform/_sources/rename.md` | `ab06898f-faf7-42e7-8275-5e3034a4d727` | matched | matched | 0 | 0 | +| `replace` | `wrangles-docs/wrangle-docs/format/_sources/replace.md` | `f0ab715e-9e0e-4614-83e4-5cd8ea08a09f` | matched | matched | 0 | 0 | +| `round` | `wrangles-docs/wrangle-docs/format/_sources/round.md` | `12f3111b-8511-4e42-8d3f-b5302dc3b4e4` | matched | matched | 0 | 0 | +| `search.find_links` | `wrangles-docs/wrangle-docs/search/_sources/find-links.md` | `ec1f661b-2cbc-4a47-88e3-646179104376` | matched | matched | 4 | 3 | +| `search.retrieve_link_content` | `wrangles-docs/wrangle-docs/search/_sources/retrieve-link-content.md` | `3d5faa87-9e96-48c0-8226-5ae566e8d76c` | matched | matched | 4 | 3 | +| `select.columns` | `wrangles-docs/wrangle-docs/select/_sources/columns.md` | `bca12c60-3957-4dc5-83f7-5ee460df2a11` | matched | matched | 2 | 2 | +| `select.dictionary_element` | `wrangles-docs/wrangle-docs/select/_sources/dictionary-element.md` | `5adaeada-6da8-464f-84cb-9fb5ecc17e48` | matched | matched | 0 | 0 | +| `select.element` | `wrangles-docs/wrangle-docs/select/_sources/element.md` | `223d2f4e-3247-4189-8b6c-e73fe44c4266` | matched | matched | 2 | 2 | +| `select.group_by` | `wrangles-docs/wrangle-docs/select/_sources/group-by.md` | `c0af10b1-423a-416c-8cb5-7e7fe1164964` | matched | matched | 3 | 3 | +| `select.head` | `wrangles-docs/wrangle-docs/select/_sources/head.md` | `237af1ec-db7d-415a-88b7-70586a2191fb` | matched | matched | 2 | 2 | +| `select.highest_confidence` | `wrangles-docs/wrangle-docs/select/_sources/highest-confidence.md` | `00aad85d-8cc8-42e5-86f3-e4ff916e8ac2` | matched | matched | 0 | 0 | +| `select.left` | `wrangles-docs/wrangle-docs/select/_sources/left.md` | `5cdd9857-0c77-43bf-80d7-d0a8cb6f980b` | matched | matched | 0 | 0 | +| `select.length` | `wrangles-docs/wrangle-docs/select/_sources/length.md` | `4d7a5f66-0a4a-40e0-8298-d5c55754423d` | matched | matched | 0 | 0 | +| `select.list_element` | `wrangles-docs/wrangle-docs/select/_sources/list-element.md` | `ec40495d-d29a-4f62-86dd-eafa43cf388a` | matched | matched | 0 | 1 | +| `select.right` | `wrangles-docs/wrangle-docs/select/_sources/right.md` | `89ee82ec-3bc5-4bfa-899b-7a1260ef9bdb` | matched | matched | 0 | 0 | +| `select.sample` | `wrangles-docs/wrangle-docs/select/_sources/sample.md` | `95a84ab6-a66e-450f-8a4a-7a87e3a77932` | matched | matched | 2 | 2 | +| `select.substring` | `wrangles-docs/wrangle-docs/select/_sources/substring.md` | `8befddf8-602e-4fa9-8f16-4c547210ebec` | matched | matched | 0 | 2 | +| `select.tail` | `wrangles-docs/wrangle-docs/select/_sources/tail.md` | `60853759-c160-49a4-87eb-036516a9d823` | matched | matched | 2 | 2 | +| `select.threshold` | `wrangles-docs/wrangle-docs/select/_sources/threshold.md` | `af2a5dcc-0ec0-48d7-8fb4-f58d9c5391d2` | matched | matched | 0 | 0 | +| `similarity` | `wrangles-docs/wrangle-docs/compare/_sources/similarity.md` | `7c733344-4cce-4938-8013-53742fb46a90` | matched | matched | 0 | 0 | +| `sort` | `wrangles-docs/wrangle-docs/select/_sources/sort.md` | `1dcf06ad-898a-4d83-862c-4774be37a687` | matched | matched | 3 | 2 | +| `split.dictionary` | `wrangles-docs/wrangle-docs/split/_sources/dictionary.md` | `06ca98e4-d026-43f7-84eb-af246d401ba9` | matched | matched | 1 | 1 | +| `split.list` | `wrangles-docs/wrangle-docs/split/_sources/list.md` | `3260b9f7-aae2-499f-8004-d211c2cf643e` | matched | matched | 2 | 2 | +| `split.text` | `wrangles-docs/wrangle-docs/split/_sources/text.md` | `e76e43f7-d129-4bf8-87b4-a304a378b130` | matched | matched | 0 | 0 | +| `split.tokenize` | `wrangles-docs/wrangle-docs/split/_sources/tokenize.md` | `6cc88418-ae0c-43f6-84ee-31e0d5f838c3` | matched | matched | 0 | 0 | +| `sql` | `wrangles-docs/wrangle-docs/compute/_sources/sql.md` | `467a06b1-a697-4d31-8061-7d83a719fd79` | matched | matched | 4 | 2 | +| `standardize` | `wrangles-docs/wrangle-docs/format/_sources/standardize.md` | `53cd3fdd-24e2-4411-8655-6014b92a3f3a` | matched | matched | 0 | 1 | +| `translate` | `wrangles-docs/wrangle-docs/format/_sources/translate.md` | `73c3ceb6-ffd8-4d74-8389-c83b99d33bb0` | matched | matched | 0 | 1 | +| `transpose` | `wrangles-docs/wrangle-docs/transform/_sources/transpose.md` | `8716347f-f286-49b2-8a0b-cb73292e7475` | matched | matched | 2 | 2 | +| `try` | `wrangles-docs/wrangle-docs/utility/_sources/try.md` | missing | matched | matched | 5 | 5 | + +## Runtime entries without quasi-registry Markdown + +| Runtime key | Python symbol | Embedded schema | +| --- | --- | --- | +| `format.price_breaks` | `wrangles.recipe_wrangles.format.price_breaks` | missing | +| `maths` | `wrangles.recipe_wrangles.main.maths` | missing | +| `recipe` | `wrangles.recipe_wrangles.main.recipe` | available | +| `standardize.clean` | `wrangles.recipe_wrangles.standardize.clean` | available | +| `standardize.custom` | `wrangles.recipe_wrangles.standardize.custom` | available | + +## Supporting and aggregate Markdown + +These files are accounted for as context or templates rather than one-to-one +wrangle records. + +- `wrangles-docs/wrangle-docs/ai/ai.md` (SHA-256 `53be8601bddc…`) +- `wrangles-docs/wrangle-docs/compare/compare.md` (SHA-256 `56e2447f70b1…`) +- `wrangles-docs/wrangle-docs/compute/compute.md` (SHA-256 `309971c405d5…`) +- `wrangles-docs/wrangle-docs/convert/convert.md` (SHA-256 `ec27a3d5b9fd…`) +- `wrangles-docs/wrangle-docs/create/create.md` (SHA-256 `d7d6b9e27d82…`) +- `wrangles-docs/wrangle-docs/date/date.md` (SHA-256 `77a783d41ebd…`) +- `wrangles-docs/wrangle-docs/extract/extract.md` (SHA-256 `d2c3f1606f36…`) +- `wrangles-docs/wrangle-docs/format/format.md` (SHA-256 `1a7dc820b43e…`) +- `wrangles-docs/wrangle-docs/index.md` (SHA-256 `86ceb6fca00b…`) +- `wrangles-docs/wrangle-docs/lookup/lookup.md` (SHA-256 `7f630a74180b…`) +- `wrangles-docs/wrangle-docs/merge/merge.md` (SHA-256 `52e95aaf804f…`) +- `wrangles-docs/wrangle-docs/search/search.md` (SHA-256 `1492c8af3f2f…`) +- `wrangles-docs/wrangle-docs/select/select.md` (SHA-256 `49385756e393…`) +- `wrangles-docs/wrangle-docs/split/split.md` (SHA-256 `929966a314ef…`) +- `wrangles-docs/wrangle-docs/transform/transform.md` (SHA-256 `b2169fe57f28…`) +- `wrangles-docs/wrangle-docs/utility/utility.md` (SHA-256 `a8a3b2a0293e…`) +- `wrangles-docs/wrangle-docs/wrangle_template.md` (SHA-256 `00bc80faa234…`) diff --git a/registry/runtime/wranglespy.json b/registry/runtime/wranglespy.json new file mode 100644 index 0000000..c1bedad --- /dev/null +++ b/registry/runtime/wranglespy.json @@ -0,0 +1,9266 @@ +{ + "$schema": "https://docs.wrangles.com/registry/schema/wrangles-runtime-manifest.schema.json", + "format": "wrangles-runtime-manifest", + "format_version": "0.1", + "source": { + "repository": "https://github.com/wrangleworks/WranglesPY", + "revision": "7916bf158e8b7e561270a1bea7b808f88956edc4" + }, + "entry_count": 98, + "wrangles": [ + { + "runtime_key": "accordion", + "python_symbol": "wrangles.recipe_wrangles.main.accordion", + "signature": "(df: pandas.core.frame.DataFrame, wrangles: list, input: Union[str, int, list], output: Union[str, list] = None, propagate: Union[str, list] = None, functions: Union[function, list] = [], variables: dict = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "wrangles", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "propagate", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + } + ], + "internal_parameters": [ + "df", + "functions", + "variables" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Apply a series of wrangles to column(s) containing lists. The wrangles will be applied to each element in the list and the results will be returned back as a list.", + "additionalProperties": false, + "required": [ + "input", + "wrangles" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "The column(s) containing the list(s) that the wrangles will be applied to the elements of." + }, + "propagate": { + "type": [ + "string", + "array" + ], + "description": "Limit the column(s) that will be available to the wrangles and replicated for each element. If not specified, all columns will be propogated. This may be useful to limit the memory use for large datasets." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Output of the wrangles to save back to the dataframe." + }, + "wrangles": { + "type": "array", + "description": "List of wrangles to apply", + "minItems": 1, + "items": { + "$ref": "#/$defs/wrangles/items" + } + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "batch", + "python_symbol": "wrangles.recipe_wrangles.main.batch", + "signature": "(df, wrangles: list, functions: Union[function, list] = [], variables: dict = None, batch_size: int = 1000, threads: int = 1, on_error: dict = None, timeout: float = None, use_multiprocessing: bool = False)", + "parameters": [ + { + "name": "wrangles", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "batch_size", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 1000 + }, + { + "name": "threads", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 1 + }, + { + "name": "on_error", + "kind": "positional_or_keyword", + "required": false, + "annotation": "dict", + "default": null + }, + { + "name": "timeout", + "kind": "positional_or_keyword", + "required": false, + "annotation": "float", + "default": null + }, + { + "name": "use_multiprocessing", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df", + "functions", + "variables" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Split the data into batches for executing a list of wrangles. Use this in situations such as where the intermediate data is too large to fit in memory.", + "additionalProperties": false, + "required": [ + "wrangles" + ], + "properties": { + "batch_size": { + "type": "integer", + "description": "The number of rows to split each batch into", + "default": 1000 + }, + "wrangles": { + "type": "array", + "description": "The wrangles to execute on the data. Each series of wrangles\nwill be run agaisnst the data in batches of the size\ndefined by batch_size.", + "minItems": 1, + "items": { + "$ref": "#/$defs/wrangles/items" + } + }, + "threads": { + "type": "integer", + "description": "The number of threads to use for parallel processing. Default 1." + }, + "on_error": { + "type": "object", + "description": "A dictionary of column_name: value to return if an error occurs while attempting to run a batch" + }, + "timeout": { + "type": "number", + "description": "The number of seconds to wait for a batch to complete before raising an error" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "classify", + "python_symbol": "wrangles.recipe_wrangles.main.classify", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list], model_id: str, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "model_id", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Run classify wrangles on the specified columns.\nRequires WrangleWorks Account and Subscription.\n", + "required": [ + "input", + "output", + "model_id" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column." + }, + "model_id": { + "type": "string", + "description": "ID of the classification model to be used" + }, + "include_confidence": { + "type": "boolean", + "description": "For models that support it, include the confidence level in the output" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "clean_whitespaces", + "python_symbol": "wrangles.recipe_wrangles.main.clean_whitespaces", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list] = None, trim: bool = True, remove_literals: bool = True) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "trim", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + }, + { + "name": "remove_literals", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Condense multiple spaces to a single space and convert special space characters to a standard space.", + "additionalProperties": false, + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input columns." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of output columns." + }, + "trim": { + "type": "boolean", + "description": "Whether to trim leading and trailing spaces. Default True." + }, + "remove_literals": { + "type": "boolean", + "description": "Whether to remove special space characters such as new lines etc. Default True." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "compare.lists", + "python_symbol": "wrangles.recipe_wrangles.compare.lists", + "signature": "(df: pandas.core.frame.DataFrame, input: list, output: str, method: str = 'intersection', remove_duplicates: bool = False, ignore_case: bool = False) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "method", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "intersection" + }, + { + "name": "remove_duplicates", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "ignore_case", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Compare multiple lists and return the intersection, difference, or union", + "required": [ + "input", + "output", + "method" + ], + "properties": { + "input": { + "type": "array", + "description": "List of input columns containing lists to compare" + }, + "output": { + "type": "string", + "description": "Name of the output column" + }, + "method": { + "type": "string", + "description": "Type of comparison to perform", + "enum": [ + "intersection", + "difference", + "union" + ] + }, + "remove_duplicates": { + "type": "boolean", + "description": "Remove duplicates from the result" + }, + "ignore_case": { + "type": "boolean", + "description": "Ignore case when comparing string items" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "compare.text", + "python_symbol": "wrangles.recipe_wrangles.compare.text", + "signature": "(df: pandas.core.frame.DataFrame, input: list, output: Union[str, list], method: str = 'difference', char: str = ' ', non_match_char: str = '*', include_ratio: bool = False, decimal_places: int = 3, exact_match: str = None, empty_a: str = None, empty_b: str = None, all_empty: str = None, case_sensitive: bool = False, metric: str = 'token_sort') -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "method", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "difference" + }, + { + "name": "char", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": " " + }, + { + "name": "non_match_char", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "*" + }, + { + "name": "include_ratio", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "decimal_places", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 3 + }, + { + "name": "exact_match", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "empty_a", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "empty_b", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "all_empty", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "case_sensitive", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "metric", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "token_sort" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Compare two strings and return the intersection or difference, use overlap to find the matching characters between the two strings, or use similarity to get a numeric similarity score.", + "required": [ + "input", + "output", + "method" + ], + "properties": { + "input": { + "type": "array", + "description": "the columns to compare. First column is the base column" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "The column to output the results to. Must be a list of two column names [mask_column, ratio_column] when method is overlap and include_ratio is true; otherwise a single column name." + }, + "method": { + "type": "string", + "description": "The type of comparison to perform (difference, intersection, overlap, similarity)", + "enum": [ + "difference", + "intersection", + "overlap", + "similarity" + ] + } + }, + "allOf": [ + { + "if": { + "properties": { + "method": { + "const": "difference" + } + } + }, + "then": { + "properties": { + "char": { + "type": "string", + "description": "(Optional) The character to split the strings on. Default is a space" + }, + "case_sensitive": { + "type": "boolean", + "description": "(Optional) Whether the comparison is case sensitive. Default is False" + } + } + } + }, + { + "if": { + "properties": { + "method": { + "const": "intersection" + } + } + }, + "then": { + "properties": { + "char": { + "type": "string", + "description": "(Optional) The character to split the strings on. Default is a space" + }, + "case_sensitive": { + "type": "boolean", + "description": "(Optional) Whether the comparison is case sensitive. Default is False" + } + } + } + }, + { + "if": { + "properties": { + "method": { + "const": "overlap" + } + } + }, + "then": { + "properties": { + "non_match_char": { + "type": "string", + "description": "(Optional) Character to use for non-matching characters" + }, + "include_ratio": { + "type": "boolean", + "description": "(Optional) Include the ratio of matching characters. This is the legacy difflib.SequenceMatcher score, not the similarity score from method: similarity. When true, output must be a list of two column names: [mask_column, ratio_column]" + }, + "decimal_places": { + "type": "integer", + "description": "(Optional) Number of decimal places to round the ratio to" + }, + "exact_match": { + "type": "string", + "description": "(Optional) Value to use for exact matches" + }, + "empty_a": { + "type": "string", + "description": "(Optional) Value to use for empty input a" + }, + "empty_b": { + "type": "string", + "description": "(Optional) Value to use for empty input b" + }, + "all_empty": { + "type": "string", + "description": "(Optional) Value to use for both inputs" + }, + "case_sensitive": { + "type": "boolean", + "description": "(Optional) Whether the comparison is case sensitive. Default is False" + } + } + } + }, + { + "if": { + "properties": { + "method": { + "const": "similarity" + } + } + }, + "then": { + "properties": { + "metric": { + "type": "string", + "description": "(Optional) The similarity metric to use. Default is token_sort", + "oneOf": [ + { + "const": "token_sort", + "description": "Ignores token order but keeps duplicate tokens, penalizing missing or extra content. Best general-purpose choice for comparing full descriptions where word order may differ." + }, + { + "const": "damerau_levenshtein", + "description": "Sequential character-edit similarity that recognizes adjacent transpositions (e.g. smtih vs smith) as a single edit. Best for short, order-sensitive strings like part numbers or codes." + }, + { + "const": "token_set", + "description": "Ignores token order and duplicate tokens. A shorter token set fully contained in a longer one can score 1.0. Best when one description is expected to be a subset of the other." + } + ] + }, + "decimal_places": { + "type": "integer", + "description": "(Optional) Number of decimal places to round the score to. Default is 3" + } + } + } + } + ] + }, + "plain_docstring": null + }, + { + "runtime_key": "compute.case_when", + "python_symbol": "wrangles.recipe_wrangles.compute.case_when", + "signature": "(df: pandas.core.frame.DataFrame, output: str, cases: list, default=None)", + "parameters": [ + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "cases", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "default", + "kind": "positional_or_keyword", + "required": false, + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Assign values to a column based on conditional logic", + "additionalProperties": false, + "required": [ + "output", + "cases" + ], + "properties": { + "output": { + "type": "string", + "description": "Name of the output column" + }, + "cases": { + "type": "array", + "description": "List of conditions and corresponding values", + "minItems": 1, + "items": { + "type": "object", + "required": [ + "condition", + "value" + ], + "properties": { + "condition": { + "type": "string", + "description": "Condition to evaluate (e.g., \"Score > 0.84\")" + }, + "value": { + "type": [ + "string", + "number", + "integer", + "boolean" + ], + "description": "Value to assign if condition is true" + } + } + } + }, + "default": { + "type": [ + "string", + "number", + "integer", + "boolean", + "null" + ], + "description": "Value to assign if no conditions are met. Default None." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "compute.score_search_results", + "python_symbol": "wrangles.recipe_wrangles.compute.score_search_results", + "signature": "(df: pandas.core.frame.DataFrame, input: list, output: str | list, must_match_part_code: bool = True, allow_mpn_exact: bool = True, allow_mpn_partial: bool = True, allow_other_exact: bool = True, allow_other_partial: bool = True, blacklist_keywords: str = '', mpn_exact_score: float = 8.0, mpn_partial_base: float = 4.0, part_code_exact_score: float = 6.0, part_code_partial_base: float = 2.0, supplier_exact_score: float = 3.0, supplier_partial_base: float = 1.0, context_match_base: float = 2.0, fuzzy_match_threshold: float = 0.8) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str | list" + }, + { + "name": "must_match_part_code", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + }, + { + "name": "allow_mpn_exact", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + }, + { + "name": "allow_mpn_partial", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + }, + { + "name": "allow_other_exact", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + }, + { + "name": "allow_other_partial", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + }, + { + "name": "blacklist_keywords", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "" + }, + { + "name": "mpn_exact_score", + "kind": "positional_or_keyword", + "required": false, + "annotation": "float", + "default": 8.0 + }, + { + "name": "mpn_partial_base", + "kind": "positional_or_keyword", + "required": false, + "annotation": "float", + "default": 4.0 + }, + { + "name": "part_code_exact_score", + "kind": "positional_or_keyword", + "required": false, + "annotation": "float", + "default": 6.0 + }, + { + "name": "part_code_partial_base", + "kind": "positional_or_keyword", + "required": false, + "annotation": "float", + "default": 2.0 + }, + { + "name": "supplier_exact_score", + "kind": "positional_or_keyword", + "required": false, + "annotation": "float", + "default": 3.0 + }, + { + "name": "supplier_partial_base", + "kind": "positional_or_keyword", + "required": false, + "annotation": "float", + "default": 1.0 + }, + { + "name": "context_match_base", + "kind": "positional_or_keyword", + "required": false, + "annotation": "float", + "default": 2.0 + }, + { + "name": "fuzzy_match_threshold", + "kind": "positional_or_keyword", + "required": false, + "annotation": "float", + "default": 0.8 + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Scores and filters search results based on progressive partial/exact matching. Can return dictionaries or a parallel list of formatted strings.", + "additionalProperties": false, + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": "array", + "description": "List of 3 to 5 columns -> [results, suppliers, part_codes, mpns (optional), descriptions (optional)]" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Output column for the dictionaries. If a list of 2 is provided, outputs [dicts_column, pretty_strings_column]." + }, + "must_match_part_code": { + "type": "boolean", + "description": "If true, filters out results that don't satisfy the allowed match types." + }, + "allow_mpn_exact": { + "type": "boolean", + "description": "Treat exact MPN matches as valid part code matches." + }, + "allow_mpn_partial": { + "type": "boolean", + "description": "Treat partial MPN matches as valid part code matches." + }, + "allow_other_exact": { + "type": "boolean", + "description": "Treat exact other part code matches as valid part code matches." + }, + "allow_other_partial": { + "type": "boolean", + "description": "Treat partial other part code matches as valid part code matches." + }, + "blacklist_keywords": { + "type": [ + "string", + "array" + ], + "description": "Comma-separated list or array of keywords to filter out URLs containing them." + }, + "mpn_exact_score": { + "type": "number" + }, + "mpn_partial_base": { + "type": "number" + }, + "part_code_exact_score": { + "type": "number" + }, + "part_code_partial_base": { + "type": "number" + }, + "supplier_exact_score": { + "type": "number" + }, + "supplier_partial_base": { + "type": "number" + }, + "context_match_base": { + "type": "number" + }, + "fuzzy_match_threshold": { + "type": "number" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "concurrent", + "python_symbol": "wrangles.recipe_wrangles.main.concurrent", + "signature": "(df: pandas.core.frame.DataFrame, wrangles: list, max_concurrency: int = 10, use_multiprocessing: bool = False, functions: Union[function, list] = [], variables: dict = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "wrangles", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "max_concurrency", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 10 + }, + { + "name": "use_multiprocessing", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df", + "functions", + "variables" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Run multiple wrangles concurrently rather than sequentially. Wrangles must specify output columns to be used concurrently. When using concurrent, Wrangles may not complete in a predictable order and it is not recommended to update overlapping columns with different wrangles.", + "additionalProperties": false, + "required": [ + "wrangles" + ], + "properties": { + "wrangles": { + "type": "array", + "description": "The wrangles section of a recipe to execute for each combination of variables", + "minItems": 1, + "items": [ + { + "$ref": "#/$defs/wrangles/items" + } + ] + }, + "max_concurrency": { + "type": "integer", + "description": "The maximum number of wrangles to execute in parallel", + "minimum": 1 + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "convert.case", + "python_symbol": "wrangles.recipe_wrangles.convert.case", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list] = None, case: str = 'lower') -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "case", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "lower" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Change the case of the input.", + "additionalProperties": false, + "required": [ + "input", + "case" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input columns" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of output columns" + }, + "case": { + "type": "string", + "description": "The case to convert to. lower, upper, title or sentence", + "enum": [ + "lower", + "upper", + "title", + "sentence" + ] + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "convert.data_type", + "python_symbol": "wrangles.recipe_wrangles.convert.data_type", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list] = None, data_type: str = 'str', default: = None, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "data_type", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "str" + }, + { + "name": "default", + "kind": "positional_or_keyword", + "required": false, + "annotation": "", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Change the data type of the input.", + "additionalProperties": false, + "required": [ + "input", + "data_type" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input columns" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of output columns" + }, + "data_type": { + "type": "string", + "description": "The new data type", + "enum": [ + "str", + "float", + "int", + "bool", + "datetime" + ] + }, + "default": { + "type": [ + "string", + "number", + "array", + "boolean", + "datetime" + ], + "description": "Set the default value to return if the input data \ncannot be converted to the specified data_type." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "convert.fraction_to_decimal", + "python_symbol": "wrangles.recipe_wrangles.convert.fraction_to_decimal", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], decimals: int = 4, output: Union[str, list] = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "decimals", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 4 + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Convert fractions to decimals", + "additionalProperties": false, + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output colum" + }, + "decimals": { + "type": [ + "number" + ], + "description": "Number of decimals to round fraction" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "convert.from_json", + "python_symbol": "wrangles.recipe_wrangles.convert.from_json", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list] = None, default=None, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "default", + "kind": "positional_or_keyword", + "required": false, + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Convert a JSON representation into an object", + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column. If omitted, the input column will be overwritten" + }, + "default": { + "type": [ + "string", + "array", + "object", + "number", + "boolean", + "null" + ], + "description": "Value to return if the row is empty or fails to be parsed as JSON. If input is a list, default may also be a list - either a single value to apply to all columns, or one value per input column." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "convert.from_yaml", + "python_symbol": "wrangles.recipe_wrangles.convert.from_yaml", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list] = None, default=None, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "default", + "kind": "positional_or_keyword", + "required": false, + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Convert a YAML representation into an object", + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column. If omitted, the input column will be overwritten" + }, + "default": { + "type": [ + "string", + "array", + "object", + "number", + "boolean", + "null" + ], + "description": "Value to return if the row is empty or fails to be parsed as YAML. If input is a list, default may also be a list - either a single value to apply to all columns, or one value per input column." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "convert.to_json", + "python_symbol": "wrangles.recipe_wrangles.convert.to_json", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list] = None, ensure_ascii: bool = False, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "ensure_ascii", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Convert an object to a JSON representation.", + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column. If omitted, the input column will be overwritten" + }, + "indent": { + "type": [ + "string", + "integer" + ], + "description": "If indent is a non-negative integer or string, then JSON array elements and object members will be pretty-printed with that indent level. An indent level of 0, negative, or \"\" will only insert newlines. None (the default) selects the most compact representation. Using a positive integer indent indents that many spaces per level. If indent is a string (such as '\\t'), that string is used to indent each level." + }, + "sort_keys": { + "type": "boolean", + "description": "If sort_keys is true (defaults to False), then the output of dictionaries will be sorted by key." + }, + "ensure_ascii": { + "type": "boolean", + "description": "If true, non-ASCII characters will be escaped. Default is false" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "convert.to_yaml", + "python_symbol": "wrangles.recipe_wrangles.convert.to_yaml", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list] = None, sort_keys: bool = False, allow_unicode: bool = True, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "sort_keys", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "allow_unicode", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Convert an object to a YAML representation.", + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column. If omitted, the input column will be overwritten" + }, + "indent": { + "type": "integer", + "description": "Specify the number of spaces for indentation to specify nested elements" + }, + "sort_keys": { + "type": "boolean", + "description": "If sort_keys is true (default: False), then the output of dictionaries will be sorted by key." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "copy", + "python_symbol": "wrangles.recipe_wrangles.pandas.copy", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list] = None, output: Union[str, list] = None, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, int, list]", + "default": null + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Make a copy of a column or a list of columns", + "additionalProperties": false, + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input columns or columns" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output columns or columns" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "create.bins", + "python_symbol": "wrangles.recipe_wrangles.create.bins", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list], bins: Union[int, list], labels: Union[str, list] = None, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "bins", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[int, list]" + }, + { + "name": "labels", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Create a column that groups data into bins", + "additionalProperties": false, + "required": [ + "input", + "output", + "bins" + ], + "properties": { + "input": { + "type": [ + "array" + ], + "description": "Name of input column" + }, + "output": { + "type": [ + "array" + ], + "description": "Name of new column" + }, + "bins": { + "type": [ + "integer", + "array" + ], + "description": "Defines the number of equal-width bins in the range" + }, + "labels": { + "type": [ + "string", + "array" + ], + "description": "Labels for the returned bins" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "create.column", + "python_symbol": "wrangles.recipe_wrangles.create.column", + "signature": "(df: pandas.core.frame.DataFrame, output: Union[str, list], value=None, value_if_exists: str = 'existing', coalesce_value: str = 'existing') -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "value", + "kind": "positional_or_keyword", + "required": false, + "default": null + }, + { + "name": "value_if_exists", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "existing" + }, + { + "name": "coalesce_value", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "existing" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Create column(s) with a user defined value. Defaults to None (empty).", + "additionalProperties": false, + "required": [ + "output" + ], + "properties": { + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of names of new columns or column_name: value pairs." + }, + "value": { + "type": [ + "string", + "number", + "object", + "array", + "boolean" + ], + "description": "(Optional) Value(s) to add in the new column(s). If using a dictionary in output, value can only be a string." + }, + "value_if_exists": { + "type": "string", + "description": "Determines behaviour when the output column already exists. existing (default): leave the column unchanged. coalesce: fill empty/null cells with the new value, keeping non-null cells. new: overwrite the entire column with the new value.", + "enum": [ + "existing", + "coalesce", + "new" + ] + }, + "coalesce_value": { + "type": "string", + "description": "Only used when value_if_exists is coalesce. Determines which side is preferred when both the existing and new values are non-empty. existing (default): keep the existing value, only fill empty/null cells with the new value. new: keep the new value, only fall back to the existing value where the new value is empty/null.", + "enum": [ + "existing", + "new" + ] + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "create.embeddings", + "python_symbol": "wrangles.recipe_wrangles.create.embeddings", + "signature": "(df: pandas.core.frame.DataFrame, input: str, api_key: str, output: str = None, batch_size: int = 100, threads: int = 10, output_type: str = 'python list', model: str = 'text-embedding-3-small', retries: int = 0, url: str = 'https://api.openai.com/v1/embeddings', precision: str = 'float32', provider: str = None, task: str = None, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "api_key", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "batch_size", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 100 + }, + { + "name": "threads", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 10 + }, + { + "name": "output_type", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "python list" + }, + { + "name": "model", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "text-embedding-3-small" + }, + { + "name": "retries", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 0 + }, + { + "name": "url", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "https://api.openai.com/v1/embeddings" + }, + { + "name": "precision", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "float32" + }, + { + "name": "provider", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "task", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Create an embedding based on text input.", + "required": [ + "input", + "api_key" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "The column of text to create the embeddings for." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "The output column the embeddings will be saved as." + }, + "api_key": { + "type": "string", + "description": "The API key." + }, + "model": { + "type": "string", + "description": "The specific model to use to generate the embeddings." + }, + "batch_size": { + "type": "integer", + "description": "The number of rows to submit per individual request." + }, + "threads": { + "type": "integer", + "description": "The number of requests to submit in parallel. Each request contains the number of rows set as batch_size." + }, + "output_type": { + "type": "string", + "description": "Output the embeddings as a numpy array or a python list Default - python list.", + "enum": [ + "numpy array", + "python list" + ] + }, + "retries": { + "type": "integer", + "description": "The number of times to retry if the request fails. This will apply exponential backoff to help with rate limiting." + }, + "provider": { + "type": "string", + "description": "Controls the request/response format for the embedding API. When omitted, inferred from url (jina.ai → jina, otherwise openai). Setting provider also sets the default url for that provider, so you only need one of provider or url for standard endpoints. Use both together only when pointing to a custom endpoint that uses a non-default provider's API format (e.g. a Jina-compatible proxy).", + "enum": [ + "openai", + "jina" + ] + }, + "url": { + "type": "string", + "description": "The endpoint to send embedding requests to. Defaults to the standard endpoint for the resolved provider. Setting a Jina URL without an explicit provider will automatically use Jina's request/response format." + }, + "precision": { + "type": "string", + "description": "The precision of the embeddings. Default is float32. This should be used with output_type numpy array.", + "enum": [ + "float16", + "float32" + ] + }, + "task": { + "type": "string", + "description": "The task type for the embedding model. Only applicable for the Jina provider. Selects the appropriate task-specific adapter.", + "enum": [ + "retrieval.query", + "retrieval.passage", + "text-matching", + "classification", + "separation" + ] + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "create.guid", + "python_symbol": "wrangles.recipe_wrangles.create.guid", + "signature": "(df: pandas.core.frame.DataFrame, output: Union[str, list]) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Create column(s) with a GUID.", + "additionalProperties": false, + "required": [ + "output" + ], + "properties": { + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of names of new columns" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "create.hash", + "python_symbol": "wrangles.recipe_wrangles.create.hash", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list], method: str = 'md5') -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "method", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "md5" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Create a hash of a column", + "additionalProperties": false, + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of input column" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of new column" + }, + "method": { + "type": "string", + "description": "The method to use to hash the input (Default: md5)", + "enum": [ + "md5", + "sha1", + "sha256", + "sha512" + ] + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "create.index", + "python_symbol": "wrangles.recipe_wrangles.create.index", + "signature": "(df: pandas.core.frame.DataFrame, output: Union[str, list], start: int = 1, step: int = 1, by=None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "start", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 1 + }, + { + "name": "step", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 1 + }, + { + "name": "by", + "kind": "positional_or_keyword", + "required": false, + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Create column(s) with an incremental index. e.g. 1,2,3...", + "additionalProperties": false, + "required": [ + "output" + ], + "properties": { + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of names of new columns" + }, + "start": { + "type": "integer", + "description": "(Optional; default 1) Starting number for the index" + }, + "step": { + "type": "integer", + "description": "(Optional; default 1) Step between successive rows" + }, + "by": { + "type": [ + "string", + "array" + ], + "description": "Optional. Cluster the created indexes by one or more columns" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "create.jinja", + "python_symbol": "wrangles.recipe_wrangles.create.jinja", + "signature": "(df: pandas.core.frame.DataFrame, template: dict, output: list, input: str = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "template", + "kind": "positional_or_keyword", + "required": true, + "annotation": "dict" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "input", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Output text using a jinja template", + "additionalProperties": false, + "required": [ + "output", + "template" + ], + "properties": { + "input": { + "type": [ + "string", + "integer" + ], + "description": "Specify a name of column containing a dictionary of elements to be used in jinja template.\nOtherwise, the column headers will be used as keys.\n" + }, + "output": { + "type": "string", + "description": "Name of the column to be output to." + }, + "template": { + "type": "object", + "description": "A dictionary which defines the template/location as well as the form which the template is input.\nIf any keys use a space, they must be replaced with an underscore. Note: spaces within column names\nare replaced by underscores (_).\n", + "additionalProperties": false, + "properties": { + "file": { + "type": "string", + "description": "A .jinja file containing the template" + }, + "column": { + "type": "string", + "description": "A column containing the jinja template - this will apply to the corresponding row." + }, + "string": { + "type": "string", + "description": "A string which is used as the jinja template" + } + } + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "create.uuid", + "python_symbol": "wrangles.recipe_wrangles.create.uuid", + "signature": "(df: pandas.core.frame.DataFrame, output: Union[str, list]) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Create column(s) with a UUID.", + "additionalProperties": false, + "required": [ + "output" + ], + "properties": { + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of names of new columns" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "date_calculator", + "python_symbol": "wrangles.recipe_wrangles.main.date_calculator", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, pandas._libs.tslibs.timestamps.Timestamp], operation: str = 'add', output: Union[str, pandas._libs.tslibs.timestamps.Timestamp] = None, time_unit: str = None, time_value: float = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, pandas._libs.tslibs.timestamps.Timestamp]" + }, + { + "name": "operation", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "add" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, pandas._libs.tslibs.timestamps.Timestamp]", + "default": null + }, + { + "name": "time_unit", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "time_value", + "kind": "positional_or_keyword", + "required": false, + "annotation": "float", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Add or Subtract time from a date", + "additionalProperties": false, + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer" + ], + "description": "Name of the dates column" + }, + "operation": { + "type": "string", + "description": "Date operation", + "enum": [ + "add", + "subtract" + ] + }, + "output": { + "type": "string", + "description": "Name of the output column of dates" + }, + "time_unit": { + "type": "string", + "description": "time unit for operation", + "enum": [ + "years", + "months", + "weeks", + "days", + "hours", + "minutes", + "seconds", + "milliseconds" + ] + }, + "time_value": { + "type": "number", + "description": "time unit value for operation" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "drop", + "python_symbol": "wrangles.recipe_wrangles.pandas.drop", + "signature": "(df: pandas.core.frame.DataFrame, columns: Union[str, list]) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "columns", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": false, + "where_params": false + }, + "where_mode": "unsupported", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Drop (Delete) selected column(s)", + "additionalProperties": true, + "required": [ + "columns" + ], + "properties": { + "columns": { + "type": [ + "array", + "string" + ], + "description": "Name of the column(s) to drop" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "explode", + "python_symbol": "wrangles.recipe_wrangles.pandas.explode", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], reset_index: bool = True, drop_empty: bool = False, where=None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "reset_index", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + }, + { + "name": "drop_empty", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "where", + "kind": "positional_or_keyword", + "required": false, + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Explode a column of lists into rows", + "additionalProperties": false, + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the column(s) to explode. If multiple columns are included they must contain lists of the same length" + }, + "reset_index": { + "type": "boolean", + "description": "Reset the index after exploding. Default True." + }, + "drop_empty": { + "type": "boolean", + "description": "If true, any rows that contain an empty list will be dropped.\nIf false, rows that contain empty lists will keep 1 row with an empty value.\nDefault False." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "extract.address", + "python_symbol": "wrangles.recipe_wrangles.extract.address", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list], dataType: str, output_format: str = None, char: str = ', ', **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "dataType", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output_format", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "char", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": ", " + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Extract parts of addresses. Requires WrangleWorks Account.", + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column." + }, + "dataType": { + "type": "string", + "description": "Specific part of the address to extract", + "enum": [ + "streets", + "cities", + "regions", + "countries" + ] + }, + "output_format": { + "type": "string", + "description": "Format of the extract output", + "enum": [ + "list", + "columns", + "concatenate" + ] + }, + "char": { + "type": "string", + "description": "Character to use when output_format is concatenate" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "extract.ai", + "python_symbol": "wrangles.recipe_wrangles.extract.ai", + "signature": "(df: pandas.core.frame.DataFrame, api_key: str, input: list = None, output: Union[dict, str, list] = None, model_id: str = None, record_examples: Union[dict, list] = None, output_format: str = None, char: str = ', ', web_search: bool = False, instructions: Union[str, list] = None, **kwargs)", + "parameters": [ + { + "name": "api_key", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "input", + "kind": "positional_or_keyword", + "required": false, + "annotation": "list", + "default": null + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[dict, str, list]", + "default": null + }, + { + "name": "model_id", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "record_examples", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[dict, list]", + "default": null + }, + { + "name": "output_format", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "char", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": ", " + }, + { + "name": "web_search", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "instructions", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Extract structured data from each input row using an AI model. Define the desired fields with output, or reuse a saved definition with model_id.", + "additionalProperties": false, + "required": [ + "api_key" + ], + "anyOf": [ + { + "required": [ + "output" + ] + }, + { + "required": [ + "model_id" + ] + } + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Input column name, column index, or list of columns supplied together as DATA for each row. If omitted, all dataframe columns are supplied.", + "items": { + "type": [ + "string", + "integer" + ] + } + }, + "output": { + "type": [ + "object", + "string", + "array" + ], + "description": "Desired extraction. Use an object keyed by output column name for structured fields, a string for one prompted value, or an array of field names/definitions. Each field may use the schema options below.", + "patternProperties": { + "^[a-zA-Z0-9 _-]+$": { + "type": [ + "object", + "string" + ], + "properties": { + "type": { + "type": "string", + "description": "JSON data type required for this field. If omitted, common scalar types are accepted. Fields allow null by default.", + "enum": [ + "string", + "number", + "integer", + "boolean", + "null", + "object", + "array" + ] + }, + "description": { + "type": "string", + "description": "Plain-language definition of the value to extract, including any selection, normalization, unit, or evidence rules." + }, + "enum": { + "type": "array", + "description": "Allowed output values. The model must choose one of these values; null is also allowed unless nullable is false." + }, + "default": { + "type": [ + "string", + "number", + "integer", + "boolean", + "null", + "object", + "array" + ], + "description": "JSON Schema annotation for a preferred default. extract.ai does not substitute this value when evidence is missing; describe fallback behavior explicitly or allow null." + }, + "examples": { + "title": "Field examples", + "type": [ + "array", + "object", + "string", + "number", + "integer", + "boolean", + "null" + ], + "description": "Field-specific examples. The backward-compatible form is a scalar or list of typical output values. A paired example may instead use input and output, with optional name and notes. Paired examples apply only to this output field; use record_examples for complete output records. Object outputs must include every required non-null nested property.", + "properties": { + "name": { + "type": "string", + "description": "Optional label included with this paired field example." + }, + "notes": { + "type": "string", + "description": "Optional explanatory guidance included with this paired field example." + }, + "input": { + "description": "Source value or record for this paired field example. Plain multiline strings remain text; use an explicit object when the runtime input is structured." + }, + "output": { + "description": "Expected value for this output field only." + } + }, + "items": { + "anyOf": [ + { + "type": "object", + "required": [ + "input", + "output" + ], + "properties": { + "name": { + "type": "string", + "description": "Optional label included with this paired field example." + }, + "notes": { + "type": "string", + "description": "Optional explanatory guidance included with this paired field example." + }, + "input": { + "description": "Source value or record for this paired field example. Plain multiline strings remain text; use an explicit object when the runtime input is structured." + }, + "output": { + "description": "Expected value for this output field only." + } + } + }, + { + "description": "Backward-compatible output-only example value." + } + ] + } + }, + "properties": { + "type": [ + "object", + "array", + "string" + ], + "description": "Child fields when type is object. Use an object to define a schema for each child. A list or comma-separated string is a shortcut that creates fixed child names. Named child values are non-null by default." + }, + "required": { + "type": [ + "array", + "string" + ], + "description": "Named object properties that must be returned. If omitted, every named property is required. Strings may use pipe or comma delimiters." + }, + "additionalProperties": { + "type": [ + "boolean", + "object" + ], + "description": "Controls keys beyond properties when type is object. Set false for fixed keys, true for arbitrary values, or provide one schema applied to every dynamic value. Dynamic dictionaries use non-strict provider mode plus local validation. Defaults to false when named properties exist." + }, + "items": { + "type": "object", + "description": "Schema applied to every element when this field's type is array." + }, + "nullable": { + "type": "boolean", + "description": "Whether the field may return null. Defaults to true while a top-level field key remains required. Named nested properties default to false. Set this explicitly to override the applicable default." + } + } + } + } + }, + "record_examples": { + "title": "Record examples", + "type": [ + "array", + "object" + ], + "description": "Whole-record examples. Each example has a separate input value or record and the complete expected output record. Optional name and notes provide model-visible context. Use {name: ..., notes: ..., input: ..., output: ...}. Omitted nullable output fields are completed with null. Required non-null nested properties must be supplied. This differs from examples nested under one output field, which teach only that field.", + "required": [ + "input", + "output" + ], + "properties": { + "name": { + "type": "string", + "description": "Optional label used to identify this example in the prompt." + }, + "notes": { + "type": "string", + "description": "Optional explanatory guidance included with this example." + }, + "input": { + "description": "Source value or record the example should match." + }, + "output": { + "description": "Expected result using the field names defined by output." + } + }, + "items": { + "type": "object", + "required": [ + "input", + "output" + ], + "properties": { + "name": { + "type": "string", + "description": "Optional label used to identify this example in the prompt." + }, + "notes": { + "type": "string", + "description": "Optional explanatory guidance included with this example." + }, + "input": { + "description": "Source value or record the example should match." + }, + "output": { + "description": "Expected result using the field names defined by output." + } + } + } + }, + "api_key": { + "type": "string", + "description": "OpenAI API key used for this wrangle, normally supplied through a recipe variable." + }, + "model": { + "type": "string", + "description": "OpenAI model ID for this call. If omitted, uses the configured extract.ai default; a saved model definition may supply its own model." + }, + "threads": { + "type": "integer", + "minimum": 1, + "description": "Maximum number of row-level requests sent in parallel. The configured default is 32." + }, + "timeout": { + "type": "number", + "exclusiveMinimum": 0, + "description": "Maximum seconds for one HTTP attempt. The configured default is 12; deadline can end the overall call sooner." + }, + "retries": { + "type": "integer", + "minimum": 0, + "description": "Number of additional attempts after a retryable failure. The configured default is 1. Backoff and request timeouts remain bounded by deadline." + }, + "url": { + "type": "string", + "description": "Override the endpoint for the selected protocol. A chat/completions URL\nselects the legacy protocol only when protocol is omitted; new recipes\nshould use the configured Responses endpoint." + }, + "provider": { + "type": "string", + "description": "AI service provider. Currently only OpenAI is supported.", + "enum": [ + "openai" + ] + }, + "protocol": { + "type": "string", + "description": "OpenAI API protocol. Responses is the configured default and is required for web_search; chat_completions remains available for legacy definitions.", + "enum": [ + "responses", + "chat_completions" + ] + }, + "deadline": { + "type": "number", + "exclusiveMinimum": 0, + "description": "Total seconds allowed for the entire wrangle call, including queued work, retries, and backoff. The configured default is 15." + }, + "store": { + "type": "boolean", + "description": "Whether OpenAI may store Responses API results. Defaults to false." + }, + "cache": { + "type": "boolean", + "description": "Reuse identical successful results from the bounded warm-instance cache. Defaults to true. Set false when fresh model or web results are required." + }, + "cache_ttl": { + "type": "number", + "exclusiveMinimum": 0, + "description": "Maximum age in seconds for a cached result used by this call. Applies to extracted values and web_search_sources together." + }, + "instructions": { + "title": "Instructions", + "type": [ + "string", + "array" + ], + "description": "Additional guidance applied to every input row. Use this for decision rules, evidence priorities, normalization requirements, or other behavior that applies to the complete extraction.", + "items": { + "type": "string" + } + }, + "model_id": { + "type": "string", + "description": "ID of a saved extract.ai definition. Use it instead of defining an output schema. When output is also supplied with model_id in a recipe, output names the destination column or columns for the saved fields." + }, + "strict": { + "type": "boolean", + "description": "Require OpenAI structured-output strict mode. Defaults to true. Definitions with dynamic dictionary keys automatically switch to non-strict provider mode and are still validated locally." + }, + "output_format": { + "type": "string", + "description": "How extracted fields are written. columns writes one dataframe column per field (default); dictionary keeps one object; concatenate joins fields into one string using char.", + "enum": [ + "dictionary", + "columns", + "concatenate" + ] + }, + "char": { + "type": "string", + "description": "Separator used only when output_format is concatenate. Defaults to comma-space." + }, + "reasoning": { + "type": "object", + "description": "Responses API reasoning controls. Set effort for reasoning-capable models. The configured default is none when that model supports it; otherwise the provider default applies.", + "properties": { + "effort": { + "type": "string", + "description": "Amount of reasoning work requested from a compatible model.", + "enum": [ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh" + ] + } + } + }, + "verbosity": { + "type": "string", + "description": "Responses API text verbosity for compatible models. Defaults to low when supported; ignored with a warning for incompatible models.", + "enum": [ + "low", + "medium", + "high" + ] + }, + "web_search": { + "type": "boolean", + "description": "Enable OpenAI Responses web search; the model decides when searching helps. When true, every row also receives web_search_sources: a deduplicated list of {title, url} objects in source order, or an empty list when no source was used. This reserved column is automatic. Requires protocol responses. Defaults to false." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "extract.attributes", + "python_symbol": "wrangles.recipe_wrangles.extract.attributes", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list], responseContent: str = 'span', attribute_type: str = None, desired_unit: str = None, bound: str = 'mid', first_element: bool = False, output_format: str = None, char: str = ', ', **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "responseContent", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "span" + }, + { + "name": "attribute_type", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "desired_unit", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "bound", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "mid" + }, + { + "name": "first_element", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "output_format", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "char", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": ", " + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Extract numeric attributes from the input such as weights or lengths. Requires WrangleWorks Account.", + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column." + }, + "attribute_type": { + "type": "string", + "description": "Request only a specific type of attribute", + "enum": [ + "angle", + "area", + "capacitance", + "charge", + "current", + "data transfer rate", + "electrical conductance", + "electrical resistance", + "energy", + "force", + "frequency", + "inductance", + "instance frequency", + "length", + "luminous flux", + "weight", + "power", + "pressure", + "speed", + "velocity", + "temperature", + "time", + "voltage", + "volume", + "volumetric flow" + ] + }, + "responseContent": { + "type": "string", + "description": "span - returns the text found. object - returns an object with the value and unit", + "enum": [ + "span", + "object" + ] + }, + "bound": { + "type": "string", + "description": "When returning an object, if the input is a range (e.g. 10-20mm) set the value to return. min, mid or max. Default mid.", + "enum": [ + "min", + "mid", + "max" + ] + }, + "desired_unit": { + "type": "string", + "description": "Convert the extracted unit to the desired unit" + }, + "first_element": { + "type": "boolean", + "description": "Get the first element from results" + }, + "output_format": { + "type": "string", + "description": "Format of the extract output", + "enum": [ + "list", + "dictionary", + "columns", + "concatenate" + ] + }, + "char": { + "type": "string", + "description": "Character to use when output_format is concatenate" + } + }, + "$ref": "#/$defs/misc/unit_entity_map" + }, + "plain_docstring": null + }, + { + "runtime_key": "extract.brackets", + "python_symbol": "wrangles.recipe_wrangles.extract.brackets", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list], find: Union[str, list] = 'all', include_brackets: bool = False, output_format: str = None, char: str = ', ') -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "find", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": "all" + }, + { + "name": "include_brackets", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "output_format", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "char", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": ", " + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Extract text properties in brackets from the input", + "additionalProperties": false, + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output columns" + }, + "find": { + "type": [ + "string", + "array" + ], + "description": "(Optional) The type of brackets to find (round '()', square '[]', curly '{}', angled '<>'). Default is all brackets." + }, + "include_brackets": { + "type": "boolean", + "description": "(Optional) Include the brackets in the output" + }, + "output_format": { + "type": "string", + "description": "Format of the extract output", + "enum": [ + "list", + "columns", + "concatenate" + ] + }, + "char": { + "type": "string", + "description": "Character to use when output_format is concatenate" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "extract.codes", + "python_symbol": "wrangles.recipe_wrangles.extract.codes", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list], first_element: bool = False, output_format: str = None, char: str = ', ', **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "first_element", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "output_format", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "char", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": ", " + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Extract alphanumeric codes from the input. Requires WrangleWorks Account.", + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input columns." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of output columns" + }, + "first_element": { + "type": "boolean", + "description": "Get the first element from results" + }, + "output_format": { + "type": "string", + "description": "Format of the extract output", + "enum": [ + "list", + "columns", + "concatenate" + ] + }, + "char": { + "type": "string", + "description": "Character to use when output_format is concatenate" + }, + "min_length": { + "type": [ + "integer", + "string" + ], + "description": "Minimum length of allowed results" + }, + "max_length": { + "type": [ + "integer", + "string" + ], + "description": "Maximum length of allowed results" + }, + "strategy": { + "type": "string", + "description": "Controls filtering of likely false positives such as measurements. Lenient skips this filter; balanced and strict currently apply the same filter. Default is balanced. Unless min_length is provided, minimum lengths default to 3 for lenient, 4 for balanced, and 5 for strict.", + "enum": [ + "lenient", + "balanced", + "strict" + ] + }, + "sort_order": { + "type": "string", + "description": "Default is input order. Also allows longest or shortest.", + "enum": [ + "input", + "longest", + "shortest" + ] + }, + "disallowed_patterns": { + "type": "string", + "description": "A pattern or JSON array of regex patterns to not include in the found codes" + }, + "include_multi_part_tokens": { + "type": "boolean", + "description": "Whether to include multi-part tokens that have a space. Default True." + }, + "extract_raw": { + "type": "boolean", + "description": "Whether to return tokens with their adjacent non-whitespace characters included, rather than the cleaned token. Default False." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "extract.custom", + "python_symbol": "wrangles.recipe_wrangles.extract.custom", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], model_id: Union[str, list], output: Union[str, list] = None, use_labels: bool = False, first_element: bool = False, case_sensitive: bool = False, extract_raw: bool = False, use_spellcheck: bool = False, include_empty_labels: bool = True, sort: str = 'training_order', output_format: str = None, char: str = ', ', **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "model_id", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "use_labels", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "first_element", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "case_sensitive", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "extract_raw", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "use_spellcheck", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "include_empty_labels", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + }, + { + "name": "sort", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "training_order" + }, + { + "name": "output_format", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "char", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": ", " + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Extract data from the input using a DIY or bespoke extraction wrangle. Requires WrangleWorks Account and Subscription.", + "required": [ + "input", + "model_id" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input columns." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of output columns" + }, + "model_id": { + "type": [ + "string", + "array" + ], + "description": "The ID of the wrangle to use" + }, + "use_labels": { + "type": "boolean", + "description": "Use Labels in the extract output {label: value}" + }, + "first_element": { + "type": "boolean", + "description": "Get the first element from results" + }, + "case_sensitive": { + "type": "boolean", + "description": "Allows the wrangle to be case sensitive if set to True, default is False." + }, + "extract_raw": { + "type": "boolean", + "description": "Extract the raw data from the wrangle" + }, + "use_spellcheck": { + "type": "boolean", + "description": "Use spellcheck to also find minor mispellings compared to the reference data" + }, + "sort": { + "type": "string", + "description": "Sort the results", + "enum": [ + "training_order", + "input_order", + "longest", + "shortest", + "alphabetical", + "reverse_alphabetical", + "ascending", + "descending" + ] + }, + "output_format": { + "type": "string", + "description": "Format of the extract output", + "enum": [ + "list", + "dictionary", + "columns", + "concatenate" + ] + }, + "char": { + "type": "string", + "description": "Character to use when output_format is concatenate" + }, + "include_empty_labels": { + "type": "boolean", + "description": "Include labels with no found values in the output when using use_labels=True" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "extract.date_properties", + "python_symbol": "wrangles.recipe_wrangles.extract.date_properties", + "signature": "(df: pandas.core.frame.DataFrame, input: pandas._libs.tslibs.timestamps.Timestamp, property: str, output: str = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "pandas._libs.tslibs.timestamps.Timestamp" + }, + { + "name": "property", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Extract date properties from a date (day, month, year, etc...)", + "additionalProperties": false, + "required": [ + "input", + "property" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output columns" + }, + "property": { + "type": "string", + "description": "Property to extract from date", + "enum": [ + "day", + "day_of_year", + "month", + "month_name", + "weekday", + "week_day_name", + "week_year", + "quarter" + ] + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "extract.date_range", + "python_symbol": "wrangles.recipe_wrangles.extract.date_range", + "signature": "(df: pandas.core.frame.DataFrame, start_time: pandas._libs.tslibs.timestamps.Timestamp, end_time: pandas._libs.tslibs.timestamps.Timestamp, output: str, range: str = 'day') -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "start_time", + "kind": "positional_or_keyword", + "required": true, + "annotation": "pandas._libs.tslibs.timestamps.Timestamp" + }, + { + "name": "end_time", + "kind": "positional_or_keyword", + "required": true, + "annotation": "pandas._libs.tslibs.timestamps.Timestamp" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "range", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "day" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Extract date range frequency from two dates", + "additionalProperties": false, + "required": [ + "start_time", + "end_time", + "output", + "range" + ], + "properties": { + "start_time": { + "type": "string", + "description": "Name of the start date column" + }, + "end_time": { + "type": "string", + "description": "Name of the end date column" + }, + "output": { + "type": "string", + "description": "Name of the output column" + }, + "range": { + "type": "string", + "description": "Type of frequency to count", + "enum": [ + "business days", + "days", + "weeks", + "months", + "semi months", + "business month ends", + "month starts", + "semi month starts", + "business month starts", + "quarters", + "quarter starts", + "years", + "business hours", + "hours", + "minutes", + "seconds", + "milliseconds" + ] + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "extract.html", + "python_symbol": "wrangles.recipe_wrangles.extract.html", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], data_type: str, output: Union[str, list] = None, output_format: str = None, char: str = ', ', **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "data_type", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "output_format", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "char", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": ", " + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Extract elements from strings containing html. Requires WrangleWorks Account.", + "required": [ + "input", + "output", + "data_type" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input columns." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of output columns" + }, + "data_type": { + "type": "string", + "description": "The type of data to extract", + "enum": [ + "text", + "links" + ] + }, + "output_format": { + "type": "string", + "description": "Format of the extract output", + "enum": [ + "list", + "columns", + "concatenate" + ] + }, + "char": { + "type": "string", + "description": "Character to use when output_format is concatenate" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "extract.properties", + "python_symbol": "wrangles.recipe_wrangles.extract.properties", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list], property_type: str = None, return_data_type: str = 'list', first_element: bool = False, output_format: str = None, char: str = ', ', **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "property_type", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "return_data_type", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "list" + }, + { + "name": "first_element", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "output_format", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "char", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": ", " + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Extract text properties from the input. Requires WrangleWorks Account.", + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output columns" + }, + "property_type": { + "type": "string", + "description": "The specific type of properties to extract", + "enum": [ + "Colours", + "Materials", + "Shapes", + "Standards" + ] + }, + "return_data_type": { + "type": "string", + "description": "Legacy format option. Prefer output_format.", + "enum": [ + "list", + "string" + ] + }, + "first_element": { + "type": "boolean", + "description": "Get the first element from results" + }, + "output_format": { + "type": "string", + "description": "Format of the extract output", + "enum": [ + "list", + "dictionary", + "columns", + "concatenate" + ] + }, + "char": { + "type": "string", + "description": "Character to use when output_format is concatenate" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "extract.regex", + "python_symbol": "wrangles.recipe_wrangles.extract.regex", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], find: str, output: Union[str, list], output_pattern: str = None, first_element: bool = False, output_format: str = None, char: str = ', ') -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "find", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "output_pattern", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "first_element", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "output_format", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "char", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": ", " + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Extract matches or specific capture groups using regex", + "additionalProperties": false, + "required": [ + "input", + "output", + "find" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column(s)." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column(s)." + }, + "find": { + "type": "string", + "description": "Pattern to find using regex" + }, + "output_pattern": { + "type": "string", + "description": "Specifies the format to output matches and specific capture groups using backreferences (e.g., `\\1`, `\\2`). Default is to return entire matches.\n\n**Example**: For a regex pattern `r'(\\d+)\\s(\\w+)'` and `output_pattern = '\\2 \\1'`, with input `'120 volt'`, the output would be `'volt 120'`.\n" + }, + "first_element": { + "type": "boolean", + "description": "Get the first element from results" + }, + "output_format": { + "type": "string", + "description": "Format of the extract output", + "enum": [ + "list", + "columns", + "concatenate" + ] + }, + "char": { + "type": "string", + "description": "Character to use when output_format is concatenate" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "filter", + "python_symbol": "wrangles.recipe_wrangles.main.filter", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list] = [], equal: Union[str, list] = None, not_equal: Union[str, list] = None, is_in: Union[str, list] = None, not_in: Union[str, list] = None, greater_than: Union[int, float] = None, greater_than_equal_to: Union[int, float] = None, less_than: Union[int, float] = None, less_than_equal_to: Union[int, float] = None, between: list = None, contains: str = None, not_contains: str = None, is_null: bool = None, where: str = None, where_params: Union[list, dict] = None, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, int, list]", + "default": [] + }, + { + "name": "equal", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "not_equal", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "is_in", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "not_in", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "greater_than", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[int, float]", + "default": null + }, + { + "name": "greater_than_equal_to", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[int, float]", + "default": null + }, + { + "name": "less_than", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[int, float]", + "default": null + }, + { + "name": "less_than_equal_to", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[int, float]", + "default": null + }, + { + "name": "between", + "kind": "positional_or_keyword", + "required": false, + "annotation": "list", + "default": null + }, + { + "name": "contains", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "not_contains", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "is_null", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": null + }, + { + "name": "where", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "where_params", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[list, dict]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "overwrite_output", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Filter the dataframe based on the contents.\nIf multiple filters are specified, all must be correct.\nFor complex filters, use the where parameter.", + "additionalProperties": false, + "properties": { + "where": { + "type": "string", + "description": "Use a SQL WHERE clause to filter the data." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Variables to use in conjunctions with where.\nThis allows the query to be parameterized.\nThis uses sqlite syntax (? or :name)" + }, + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the column to filter on.\nIf multiple are provided, all must match the criteria." + }, + "equal": { + "type": [ + "string", + "array", + "boolean", + "number" + ], + "description": "Select rows where the values equal a given value." + }, + "not_equal": { + "type": [ + "string", + "array", + "boolean", + "number" + ], + "description": "Select rows where the values do not equal a given value." + }, + "is_in": { + "type": [ + "array", + "string" + ], + "description": "Select rows where the values are in a given list." + }, + "not_in": { + "type": [ + "array", + "string" + ], + "description": "Select rows where the values are not in a given list." + }, + "is_null": { + "type": "boolean", + "description": "If true, select all rows where the value is NULL. If false, where is not NULL." + }, + "greater_than": { + "type": [ + "integer", + "number" + ], + "description": "Select rows where the values are greater than a specified value. Does include the value itself." + }, + "greater_than_equal_to": { + "type": [ + "integer", + "number" + ], + "description": "Select rows where the values are greater than a specified value. Does include the value itself." + }, + "less_than": { + "type": [ + "integer", + "number" + ], + "description": "Select rows where the values are less than a specified value. Does not include the value itself." + }, + "less_than_equal_to": { + "type": [ + "integer", + "number" + ], + "description": "Select rows where the values are less than a specified value. Does include the value itself." + }, + "between": { + "type": [ + "array" + ], + "description": "Value or list of values to filter that are in between two parameter values" + }, + "contains": { + "type": "string", + "description": "Select rows where the input contains the value. Allows regular expressions." + }, + "not_contains": { + "type": "string", + "description": "Select rows where the input does not contain the value. Allows regular expressions." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "format.dates", + "python_symbol": "wrangles.recipe_wrangles.format.dates", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], format: str, output: Union[str, list] = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "format", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Format a date", + "additionalProperties": false, + "required": [ + "input", + "format" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column" + }, + "format": { + "type": [ + "string" + ], + "description": "String pattern to format date" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "format.pad", + "python_symbol": "wrangles.recipe_wrangles.format.pad", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], pad_length: int, side: str, char: str, output: Union[str, list] = None, skip_empty: bool = False) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "pad_length", + "kind": "positional_or_keyword", + "required": true, + "annotation": "int" + }, + { + "name": "side", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "char", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "skip_empty", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Pad a string to a fixed length", + "additionalProperties": false, + "required": [ + "input", + "pad_length", + "side", + "char" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column" + }, + "pad_length": { + "type": [ + "number" + ], + "description": "Length for the output" + }, + "side": { + "type": [ + "string" + ], + "description": "Side from which to fill resulting string" + }, + "char": { + "type": [ + "string" + ], + "description": "The character to pad the input with" + }, + "skip_empty": { + "type": "boolean", + "description": "If true, skip padding for empty or whitespace-only values", + "default": false + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "format.prefix", + "python_symbol": "wrangles.recipe_wrangles.format.prefix", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], value: Union[str, int, float], output: Union[str, list] = None, skip_empty: bool = False) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "value", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, float]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "skip_empty", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Add a prefix to a column", + "additionalProperties": false, + "required": [ + "input", + "value" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column" + }, + "value": { + "type": [ + "string", + "number" + ], + "description": "Prefix value to add" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "(Optional) Name of the output column" + }, + "skip_empty": { + "type": "boolean", + "description": "Whether to skip empty values", + "default": false + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "format.price_breaks", + "python_symbol": "wrangles.recipe_wrangles.format.price_breaks", + "signature": "(df: pandas.core.frame.DataFrame, input: list, categoryLabel: str, valueLabel: str) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "categoryLabel", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "valueLabel", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "missing", + "docstring_schema": null, + "plain_docstring": "Rearrange price breaks" + }, + { + "runtime_key": "format.remove_duplicates", + "python_symbol": "wrangles.recipe_wrangles.format.remove_duplicates", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list] = None, ignore_case: bool = False) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "ignore_case", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Remove duplicates from a list. Preserves input order.", + "additionalProperties": false, + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column" + }, + "ignore_case": { + "type": "boolean", + "description": "Ignore case when removing duplicates" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "format.significant_figures", + "python_symbol": "wrangles.recipe_wrangles.format.significant_figures", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], significant_figures: int = 3, output: Union[str, list] = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "significant_figures", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 3 + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Format a value to a specific number of significant figures", + "additionalProperties": false, + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column" + }, + "significant_figures": { + "type": [ + "integer" + ], + "description": "Number of significant figures to format to. Default is 3." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "format.suffix", + "python_symbol": "wrangles.recipe_wrangles.format.suffix", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], value: Union[str, int, float, list], output: str = None, skip_empty: bool = False) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "value", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, float, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "skip_empty", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Add a suffix to a column", + "additionalProperties": false, + "required": [ + "input", + "value" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column" + }, + "value": { + "type": [ + "string", + "number" + ], + "description": "Suffix value to add" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "(Optional) Name of the output column" + }, + "skip_empty": { + "type": "boolean", + "description": "Whether to skip empty values", + "default": false + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "format.trim", + "python_symbol": "wrangles.recipe_wrangles.format.trim", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list] = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Remove excess whitespace at the start and end of text.", + "additionalProperties": false, + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "generate.ai", + "python_symbol": "wrangles.recipe_wrangles.generate.ai", + "signature": "(df: pandas.core.frame.DataFrame, api_key: str, output: Union[Dict, str, List], input: Union[str, List] = None, model: str = 'gpt-5', threads: int = 20, timeout: int = 90, retries: int = 0, messages: Optional[List[dict]] = None, url: str = 'https://api.openai.com/v1/responses', strict: bool = False, web_search: bool = False, reasoning: Dict[str, str] = {'effort': 'low'}, previous_response: bool = False, summary: bool = False, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "api_key", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[Dict, str, List]" + }, + { + "name": "input", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, List]", + "default": null + }, + { + "name": "model", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "gpt-5" + }, + { + "name": "threads", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 20 + }, + { + "name": "timeout", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 90 + }, + { + "name": "retries", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 0 + }, + { + "name": "messages", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Optional[List[dict]]", + "default": null + }, + { + "name": "url", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "https://api.openai.com/v1/responses" + }, + { + "name": "strict", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "web_search", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "reasoning", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Dict[str, str]", + "default": { + "effort": "low" + } + }, + { + "name": "previous_response", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "summary", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Generate structured AI output for each recipe row.", + "additionalProperties": false, + "required": [ + "api_key", + "output" + ], + "properties": { + "api_key": { + "type": "string", + "description": "OpenAI-compatible API key." + }, + "input": { + "type": [ + "string", + "array" + ], + "description": "Column(s) to concatenate into the prompt (defaults to all columns)." + }, + "output": { + "type": [ + "string", + "object", + "array" + ], + "description": "Target schema; string/array shorthands are expanded automatically." + }, + "model": { + "type": "string", + "description": "Responses model name (e.g. gpt-5-mini)." + }, + "threads": { + "type": "integer", + "description": "Maximum concurrent requests (default 20)." + }, + "timeout": { + "type": "integer", + "description": "Per-request timeout in seconds." + }, + "retries": { + "type": "integer", + "description": "Number of retry attempts on failure." + }, + "messages": { + "type": "array", + "description": "Optional extra messages forwarded to the inner generate helper." + }, + "url": { + "type": "string", + "description": "Override for the OpenAI-compatible endpoint." + }, + "strict": { + "type": "boolean", + "description": "Enforce JSON-schema validation on the response." + }, + "web_search": { + "type": "boolean", + "description": "Enable DuckDuckGo context lookup per row." + }, + "reasoning": { + "type": "object", + "description": "Responses API reasoning options (forwarded verbatim)." + }, + "previous_response": { + "type": "boolean", + "description": "Chain responses by reusing previous_response_id for field-by-field calls." + }, + "summary": { + "type": "boolean", + "description": "Request summary text to be merged into the output." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "huggingface", + "python_symbol": "wrangles.recipe_wrangles.main.huggingface", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], api_token: str, model: str, output: Union[str, list] = None, parameters=None)", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "api_token", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "model", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "parameters", + "kind": "positional_or_keyword", + "required": false, + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Use a model from huggingface", + "required": [ + "input", + "api_token", + "model" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column. If not provided, will overwrite the input column\n" + }, + "model": { + "type": "string", + "description": "Name of the model to use. e.g. facebook/bart-large-cnn" + }, + "api_token": { + "type": "string", + "description": "Huggingface API Token" + }, + "parameters": { + "type": "object", + "description": "Optionally, provide additional parameters to define the model behaviour" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "log", + "python_symbol": "wrangles.recipe_wrangles.main.log", + "signature": "(df: pandas.core.frame.DataFrame, columns: list = None, write: list = None, error: str = None, warning: str = None, info: str = None, log_data: bool = None, **kwargs)", + "parameters": [ + { + "name": "columns", + "kind": "positional_or_keyword", + "required": false, + "annotation": "list", + "default": null + }, + { + "name": "write", + "kind": "positional_or_keyword", + "required": false, + "annotation": "list", + "default": null + }, + { + "name": "warning", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "info", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "log_data", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": null + } + ], + "internal_parameters": [ + "df", + "error" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Log the current status of the dataframe.", + "additionalProperties": false, + "properties": { + "columns": { + "type": "array", + "description": "(Optional, default all columns) List of specific columns to log." + }, + "write": { + "type": "array", + "description": "(Optional) Allows for an intermediate output to a file/dataframe/database etc.", + "minItems": 1, + "items": { + "$ref": "#/$defs/write/items" + } + }, + "error": { + "type": "string", + "description": "Log an error to the console" + }, + "warning": { + "type": "string", + "description": "Log a warning to the console" + }, + "info": { + "type": "string", + "description": "Log info to the console" + }, + "log_data": { + "type": "boolean", + "description": "Whether to log a sample of the contents of the dataframe. Default True if not logging to a write, error, warning or info. Default False otherwise." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "lookup", + "python_symbol": "wrangles.recipe_wrangles.main.lookup", + "signature": "(df: pandas.core.frame.DataFrame, input: str, output: Union[str, list] = None, model_id: str = None, lookup_mode: str = 'by_row', n: int = None, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "model_id", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "lookup_mode", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "by_row" + }, + { + "name": "n", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Lookup values from a saved lookup wrangle", + "required": [ + "input", + "model_id" + ], + "properties": { + "input": { + "type": [ + "string", + "integer" + ], + "description": "Name of the column(s) to lookup." + }, + "model_id": { + "type": "string", + "description": "The model_id to use lookup against" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column(s). When n is provided and the output list length equals n, each output column receives the corresponding match. A single output containing a wildcard (*) is expanded into n columns, e.g. \"Top *\" with n: 3 becomes \"Top 1\", \"Top 2\", \"Top 3\"." + }, + "n": { + "type": "integer", + "description": "Number of matches to return per input value. When the output list length equals n, each output column receives the corresponding match. Otherwise all n matches are stored as a list in each output column." + }, + "lookup_mode": { + "type": "string", + "description": "How to perform lookups. 'by_row' (default): lookup each row individually. 'by_dataframe': lookup unique values once, copy results to all rows. 'by_matrix': lookup once per matrix permutation.", + "enum": [ + "by_row", + "by_matrix", + "by_dataframe" + ] + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "math", + "python_symbol": "wrangles.recipe_wrangles.main.math", + "signature": "(df: pandas.core.frame.DataFrame, input: str, output: str) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Apply a mathematical calculation.", + "additionalProperties": false, + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": [ + "string", + "integer" + ], + "description": "The mathematical expression using column names. e.g. column1 * column2\n+ column3. Note: spaces within column names are replaced by underscores (_).\n" + }, + "output": { + "type": "string", + "description": "The column to output the results to" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "maths", + "python_symbol": "wrangles.recipe_wrangles.main.maths", + "signature": "(df: pandas.core.frame.DataFrame, input: str, output: str) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "missing", + "docstring_schema": null, + "plain_docstring": "Deprecated - use math" + }, + { + "runtime_key": "matrix", + "python_symbol": "wrangles.recipe_wrangles.main.matrix", + "signature": "(df: pandas.core.frame.DataFrame, variables: dict, wrangles: list, functions: Union[function, list] = [], strategy: str = 'loop')", + "parameters": [ + { + "name": "variables", + "kind": "positional_or_keyword", + "required": true, + "annotation": "dict" + }, + { + "name": "wrangles", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "strategy", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "loop" + } + ], + "internal_parameters": [ + "df", + "functions" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Apply a matrix of wrangles to the dataframe.\nThis will run the wrangles for each combination of the variables.", + "required": [ + "variables", + "wrangles" + ], + "properties": { + "variables": { + "type": "object", + "description": "A dictionary of variables to pass to the wrangle.\nThe key is the variable name and the value is a list of values." + }, + "wrangles": { + "type": "array", + "description": "The wrangles to apply to the dataframe.\nEach wrangle will be run for each combination of the variables.", + "minItems": 1, + "items": { + "$ref": "#/$defs/wrangles/items" + } + }, + "strategy": { + "type": "string", + "enum": [ + "permutations", + "loop" + ], + "description": "Determines how to combine variables when there are multiple. loop (default) iterates over each set of variables, repeating shorter lists until the longest is completed. permutations uses the combination of all variables against all other variables." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "merge.coalesce", + "python_symbol": "wrangles.recipe_wrangles.merge.coalesce", + "signature": "(df: pandas.core.frame.DataFrame, input: list, output: str = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Take the first non-empty value from a series of columns or lists.", + "additionalProperties": false, + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "array", + "string", + "integer" + ], + "description": "List of input columns or a single column containing lists" + }, + "output": { + "type": "string", + "description": "Name of the output columns. This is required if multiple input columns are provided." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "merge.concatenate", + "python_symbol": "wrangles.recipe_wrangles.merge.concatenate", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: str, char: str = ',', skip_empty: bool = False) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "char", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "," + }, + { + "name": "skip_empty", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Concatenate a list of columns or a list within a single column.", + "additionalProperties": false, + "required": [ + "input", + "output", + "char" + ], + "properties": { + "input": { + "type": [ + "array", + "string", + "integer" + ], + "description": "Either a single column name or list of columns" + }, + "output": { + "type": "string", + "description": "Name of the output column" + }, + "char": { + "type": "string", + "description": "(Optional) Character to add between successive values" + }, + "skip_empty": { + "type": "boolean", + "desription": "Whether to skip empty values", + "default": false + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "merge.dictionaries", + "python_symbol": "wrangles.recipe_wrangles.merge.dictionaries", + "signature": "(df: pandas.core.frame.DataFrame, input: list, output: str, skip_empty: bool = False) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "skip_empty", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Take dictionaries in multiple columns and merge them to a single dictionary.", + "additionalProperties": false, + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": "array", + "description": "list of input columns" + }, + "output": { + "type": "string", + "description": "Name of the output column" + }, + "skip_empty": { + "type": "boolean", + "description": "Whether to skip empty dictionaries when merging", + "default": false + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "merge.key_value_pairs", + "python_symbol": "wrangles.recipe_wrangles.merge.key_value_pairs", + "signature": "(df: pandas.core.frame.DataFrame, input: dict, output: str, skip_empty: bool = False) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "dict" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "skip_empty", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Create a dictionary from keys and values in paired columns e.g. COLUMN_NAME_1, COLUMN_VALUE_1, COLUMN_NAME_2, COLUMN_VALUE_2 ...", + "additionalProperties": false, + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": "object", + "description": "Matched pairs of key and value columns" + }, + "output": { + "type": "string", + "description": "Name of the output column" + }, + "skip_empty": { + "type": "boolean", + "description": "Whether to skip empty keys or values when creating the dictionary", + "default": false + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "merge.lists", + "python_symbol": "wrangles.recipe_wrangles.merge.lists", + "signature": "(df: pandas.core.frame.DataFrame, input: list, output: str, remove_duplicates: bool = False, ignore_case: bool = False, include_empty: bool = True) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "remove_duplicates", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "ignore_case", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "include_empty", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Take lists in multiple columns and merge them to a single list.", + "additionalProperties": false, + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": "array", + "description": "List of input columns" + }, + "output": { + "type": "string", + "description": "Name of the output column" + }, + "remove_duplicates": { + "type": "boolean", + "description": "Whether to remove duplicates from the created list" + }, + "ignore_case": { + "type": "boolean", + "description": "Ignore case when removing duplicates" + }, + "include_empty": { + "type": "boolean", + "description": "Whether to include empty values in the created list" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "merge.to_dict", + "python_symbol": "wrangles.recipe_wrangles.merge.to_dict", + "signature": "(df: pandas.core.frame.DataFrame, input: list, output: str, include_empty: bool = False) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "include_empty", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Take multiple columns and merge them to a dictionary (aka object) using the column headers as keys.", + "additionalProperties": false, + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": [ + "array", + "string", + "integer" + ], + "description": "List of input columns" + }, + "output": { + "type": "string", + "description": "Name of the output column" + }, + "include_empty": { + "type": "boolean", + "description": "Whether to include empty columns in the created dictionary" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "merge.to_list", + "python_symbol": "wrangles.recipe_wrangles.merge.to_list", + "signature": "(df: pandas.core.frame.DataFrame, input: list, output: str, include_empty: bool = False) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "include_empty", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Take multiple columns and merge them to a list.", + "additionalProperties": false, + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": [ + "array", + "string", + "integer" + ], + "description": "List of input columns" + }, + "output": { + "type": "string", + "description": "Name of the output column" + }, + "include_empty": { + "type": "boolean", + "description": "Whether to include empty columns in the created list" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "python", + "python_symbol": "wrangles.recipe_wrangles.main.python", + "signature": "(df: pandas.core.frame.DataFrame, command: str, output: Union[str, list], input: Union[str, int, list] = None, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "command", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "input", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, int, list]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Apply a simple single-line python command. For more complex python use a custom function.\nNote, this evaluates the python command - be especially cautious including\nvariables from untrusted sources within the command string.\nThe python command will be evaluated once for each row and the result returned.\nReference column values by using their name.\nNon-alphanumeric characters within column names are replaced by underscores (_)\nAdditionally, all columns are available as a dict named kwargs.\nAdditional parameters set for the wrangle will also be available to the command.", + "required": [ + "command", + "output" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input column(s) to filter the data available\nto the command. Useful in conjunction with kwargs to target\na variable range of columns.\nIf not specified, all columns will be available." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of output column(s). To output multiple columns,\nreturn a list of the corresponding length." + }, + "command": { + "type": "string", + "description": "Python command. This must return a value.\nNote: any non-alphanumeric characters in variable names\nare replaced by underscores (_)." + }, + "except": { + "type": [ + "string", + "array", + "number", + "integer", + "boolean", + "object" + ], + "description": "Value to return for the row if an exception occurs during the evaluation.\nIf not provided, an exception will be raised as normal.\nIf multiple output columns are specified, this must match the length." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "recipe", + "python_symbol": "wrangles.recipe_wrangles.main.recipe", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list] = None, output: Union[str, list] = None, name: str = None, variables=None, functions: Union[function, list] = [], **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, int, list]", + "default": null + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "name", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "variables", + "kind": "positional_or_keyword", + "required": false, + "default": null + } + ], + "internal_parameters": [ + "df", + "functions" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "anyOf": [ + { + "$ref": "#" + }, + { + "type": "object", + "description": "Run a recipe as a Wrangle. Recipe-ception,", + "additionalProperties": false, + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "description": "file name of the recipe" + }, + "variables": { + "type": "object", + "description": "A dictionary of variables to pass to the recipe" + } + } + } + ] + }, + "plain_docstring": null + }, + { + "runtime_key": "reindex", + "python_symbol": "wrangles.recipe_wrangles.pandas.reindex", + "signature": "(df: pandas.core.frame.DataFrame, labels: list = None, index: list = None, columns: list = None, axis: Union[str, int] = None, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "labels", + "kind": "positional_or_keyword", + "required": false, + "annotation": "list", + "default": null + }, + { + "name": "index", + "kind": "positional_or_keyword", + "required": false, + "annotation": "list", + "default": null + }, + { + "name": "columns", + "kind": "positional_or_keyword", + "required": false, + "annotation": "list", + "default": null + }, + { + "name": "axis", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, int]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": false, + "where_params": false + }, + "where_mode": "unsupported", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Changes the row labels and column labels of a DataFrame.", + "additionalProperties": false, + "properties": { + "labels": { + "type": "array", + "description": "New labels / index to conform the axis specified by ‘axis’ to." + }, + "index": { + "type": "array", + "description": "New labels for the index. Preferably an Index object to avoid duplicating data." + }, + "columns": { + "type": "array", + "description": "New labels for the columns. Preferably an Index object to avoid duplicating data." + }, + "axis": { + "type": [ + "number", + "string" + ], + "description": "Axis to target. Can be either the axis name (‘index’, ‘columns’) or number (0, 1)." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "remove_words", + "python_symbol": "wrangles.recipe_wrangles.main.remove_words", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], to_remove: str, output: Union[str, list] = None, tokenize_to_remove: bool = False, ignore_case: bool = True) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "to_remove", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "tokenize_to_remove", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "ignore_case", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Remove all the elements that occur in one list from another.", + "additionalProperties": false, + "required": [ + "input", + "to_remove", + "output" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of column to remove words from" + }, + "to_remove": { + "type": "array", + "description": "Column or list of columns with a list of words to be removed" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output columns" + }, + "tokenize_to_remove": { + "type": "boolean", + "description": "Tokenize all to_remove inputs" + }, + "ignore_case": { + "type": "boolean", + "description": "Ignore input and to_remove case" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "rename", + "python_symbol": "wrangles.recipe_wrangles.main.rename", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list] = None, output: Union[str, list] = None, wrangles: list = None, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, int, list]", + "default": null + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "wrangles", + "kind": "positional_or_keyword", + "required": false, + "annotation": "list", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": false, + "where_params": false + }, + "where_mode": "unsupported", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Rename a column or list of columns.", + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input columns." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of output columns." + }, + "wrangles": { + "type": "array", + "description": "Use wrangles to transform the column names.\nThe input is named 'columns' and the final result\nmust also include the column named 'columns'.\nThis can only be used instead of the standard rename.", + "minItems": 1, + "items": { + "$ref": "#/$defs/wrangles/items" + } + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "replace", + "python_symbol": "wrangles.recipe_wrangles.main.replace", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], find: str, replace: str, output: Union[str, list] = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "find", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "replace", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Quick find and replace for simple values. Can use regex if 'input' in params and isinstance(params['input'], list):in the find field.", + "additionalProperties": false, + "required": [ + "input", + "find", + "replace" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input column" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of output column" + }, + "find": { + "type": "string", + "description": "Pattern to find using regex" + }, + "replace": { + "type": "string", + "description": "Value to replace the pattern found" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "round", + "python_symbol": "wrangles.recipe_wrangles.pandas.round", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], decimals: int = 0, output: Union[str, list] = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "decimals", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 0 + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Round column(s) to the specified decimals", + "additionalProperties": false, + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column(s)" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column(s)" + }, + "decimals": { + "type": "number", + "description": "Number of decimal places to round column" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "search.find_links", + "python_symbol": "wrangles.recipe_wrangles.search.find_links", + "signature": "(df: pandas.core.frame.DataFrame, queries: str | list, id: str, output: str | list | None = None, client: str = 'serpapi', api_key: str | None = None, n_results: int = 10, threads: int = 10, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "queries", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str | list" + }, + { + "name": "id", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str | list | None", + "default": null + }, + { + "name": "client", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "serpapi" + }, + { + "name": "api_key", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str | None", + "default": null + }, + { + "name": "n_results", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 10 + }, + { + "name": "threads", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 10 + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Perform web searches to find links. Returns structured search results with titles, links, snippets, and optional pricing.", + "additionalProperties": false, + "required": [ + "queries", + "id", + "output" + ], + "properties": { + "queries": { + "type": [ + "string", + "array" + ], + "description": "Name or list of input columns containing search queries." + }, + "id": { + "type": "string", + "description": "Name of the column containing the row ID to append to each search result." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Output column for the dictionaries. If a list of 2 is provided, outputs [dicts_column, pretty_strings_column]." + }, + "client": { + "type": "string", + "description": "The search provider to use.", + "enum": [ + "serpapi" + ], + "default": "serpapi" + }, + "api_key": { + "type": "string", + "description": "API key for the search client. Can also be set as an environment variable (e.g., SERPAPI_API_KEY)." + }, + "n_results": { + "type": "integer", + "description": "Number of search results to return per query (default 10, max 100).", + "default": 10 + }, + "threads": { + "type": "integer", + "description": "Number of concurrent threads for parallel processing (default 10).", + "default": 10 + }, + "country": { + "type": "string", + "description": "Country code for search results (default 'us'). Alias: gl.", + "default": "us" + }, + "language": { + "type": "string", + "description": "Language code for search results (default 'en'). Alias: hl.", + "default": "en" + }, + "location": { + "type": "string", + "description": "Location for search results (e.g., 'Austin, Texas')." + }, + "device": { + "type": "string", + "description": "Device type for search results.", + "enum": [ + "desktop", + "mobile", + "tablet" + ] + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "search.retrieve_link_content", + "python_symbol": "wrangles.recipe_wrangles.search.retrieve_link_content", + "signature": "(df: pandas.core.frame.DataFrame, input: str | list, output: str | list | None = None, client: str = 'google_url_context', api_key: str | None = None, prompt: str | None = None, model_id: str = 'models/gemini-3-flash-preview', output_format: str = 'json', threads: int = 10) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str | list" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str | list | None", + "default": null + }, + { + "name": "client", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "google_url_context" + }, + { + "name": "api_key", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str | None", + "default": null + }, + { + "name": "prompt", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str | None", + "default": null + }, + { + "name": "model_id", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "models/gemini-3-flash-preview" + }, + { + "name": "output_format", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "json" + }, + { + "name": "threads", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 10 + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Retrieves targeted content from web pages using LLM URL extraction. Can optionally output a second column containing a clean, human-readable text summary of the retrieved data.", + "additionalProperties": false, + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": [ + "string", + "array" + ], + "description": "Name or list of input columns containing URLs or Scored Search Result dictionaries." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column for the raw dictionaries. To output BOTH the raw dictionaries and the formatted text, provide a list of exactly two column names (e.g., [page_data, page_text])." + }, + "client": { + "type": "string", + "description": "The retrieval provider to use.", + "enum": [ + "google_url_context" + ], + "default": "google_url_context" + }, + "api_key": { + "type": "string", + "description": "API key for the provider. Can also be set as an environment variable (e.g., GOOGLE_API_KEY)." + }, + "prompt": { + "type": "string", + "description": "Optional custom system prompt to guide the extraction behavior and output format." + }, + "model_id": { + "type": "string", + "description": "The specific model ID to use (default models/gemini-3-flash-preview)." + }, + "output_format": { + "type": "string", + "description": "The desired format for the extracted content.", + "enum": [ + "markdown", + "json" + ], + "default": "json" + }, + "threads": { + "type": "integer", + "description": "Number of concurrent threads for parallel processing (default 10).", + "default": 10 + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "select.columns", + "python_symbol": "wrangles.recipe_wrangles.select.columns", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list]) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "overwrite_output", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Select columns from the dataframe", + "additionalProperties": false, + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the column(s) to select" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "select.dictionary_element", + "python_symbol": "wrangles.recipe_wrangles.select.dictionary_element", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], element: str, output: Union[str, list] = None, default: = '') -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "element", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "default", + "kind": "positional_or_keyword", + "required": false, + "annotation": "", + "default": "" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Select one or more element of a dictionary.", + "additionalProperties": false, + "required": [ + "input", + "element" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column. If omitted, the input column will be replaced." + }, + "element": { + "type": [ + "string", + "array" + ], + "description": "The key or keys from the dictionary to select.\nIf a single key is provided, the value will be returned\nIf a lists of keys are selected,\nthe result will be a new dictionary." + }, + "default": { + "type": [ + "string", + "number", + "array", + "object", + "boolean", + "null" + ], + "description": "Set the default value to return if the specified element doesn't exist.\nIf selecting multiple elements, a dict of defaults can be set." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "select.element", + "python_symbol": "wrangles.recipe_wrangles.select.element", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list] = None, default: Union[, list] = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "default", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[, list]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Select elements of lists or dicts using python syntax like col[0]['key']", + "additionalProperties": false, + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column and sub elements This permits by index for lists or dict and by key for dicts e.g. col[0]['key'] // [{\"key\":\"val\"}] -> \"val\"" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column(s)" + }, + "default": { + "type": [ + "string", + "number", + "array", + "object", + "boolean" + ], + "description": "Set the default value to return if the specified element doesn't exist.", + "default": "" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "select.group_by", + "python_symbol": "wrangles.recipe_wrangles.select.group_by", + "signature": "(df, by=[], functions: Union[function, list] = [], auto_rename_columns: bool = True, **kwargs)", + "parameters": [ + { + "name": "by", + "kind": "positional_or_keyword", + "required": false, + "default": [] + }, + { + "name": "auto_rename_columns", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + } + ], + "internal_parameters": [ + "df", + "functions" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "overwrite_output", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Group and aggregate the data", + "properties": { + "by": { + "type": [ + "string", + "array" + ], + "description": "List of the input columns to group on" + }, + "list": { + "type": [ + "string", + "array" + ], + "description": "Group and return all values for these column(s) as a list" + }, + "first": { + "type": [ + "string", + "array" + ], + "description": "The first value for these column(s)" + }, + "last": { + "type": [ + "string", + "array" + ], + "description": "The last value for these column(s)" + }, + "min": { + "type": [ + "string", + "array" + ], + "description": "The minimum value for these column(s)" + }, + "max": { + "type": [ + "string", + "array" + ], + "description": "The maximum value for these column(s)" + }, + "mean": { + "type": [ + "string", + "array" + ], + "description": "The mean (average) value for these column(s)" + }, + "median": { + "type": [ + "string", + "array" + ], + "description": "The median value for these column(s)" + }, + "nunique": { + "type": [ + "string", + "array" + ], + "description": "The count of unique values for these column(s)" + }, + "count": { + "type": [ + "string", + "array" + ], + "description": "The count of values for these column(s)" + }, + "counts": { + "type": [ + "string", + "array" + ], + "description": "Return a dictionary containing the count of each distinct value for these column(s). Keys are converted to JSON-safe strings; missing values use the key \"null\" and booleans use lowercase \"true\"/\"false\"." + }, + "std": { + "type": [ + "string", + "array" + ], + "description": "The standard deviation of values for these column(s)" + }, + "sum": { + "type": [ + "string", + "array" + ], + "description": "The total of values for these column(s)" + }, + "any": { + "type": [ + "string", + "array" + ], + "description": "Return true if any of the values for these column(s) are true" + }, + "all": { + "type": [ + "string", + "array" + ], + "description": "Return true if all of the values for these column(s) are true" + }, + "p75": { + "type": [ + "string", + "array" + ], + "description": "Get a percentile. Note, you can use any integer here for the corresponding percentile." + }, + "custom.placeholder": { + "type": [ + "string", + "array" + ], + "description": "Placeholder for custom functions. Replace 'placeholder' with the name of the function." + }, + "auto_rename_columns": { + "type": "boolean", + "description": "If true (default), aggregated column names include the operation as a suffix (e.g. Value.sum). If false, column names are left as-is; use a dictionary entry to supply a custom output name (e.g. - Value: Total)." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "select.head", + "python_symbol": "wrangles.recipe_wrangles.select.head", + "signature": "(df: pandas.core.frame.DataFrame, n: int) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "n", + "kind": "positional_or_keyword", + "required": true, + "annotation": "int" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "overwrite_output", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Return the first n rows", + "required": [ + "n" + ], + "properties": { + "n": { + "type": "integer", + "description": "Number of rows to return" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "select.highest_confidence", + "python_symbol": "wrangles.recipe_wrangles.select.highest_confidence", + "signature": "(df: pandas.core.frame.DataFrame, input: list, output: Union[str, list]) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Select the option with the highest confidence from multiple columns. Inputs are expected to be of the form [<>, <>].", + "additionalProperties": false, + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": "array", + "description": "List of the input columns to select from" + }, + "output": { + "type": [ + "array", + "string" + ], + "description": "If two columns; the result and confidence. If one column; [result, confidence]" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "select.left", + "python_symbol": "wrangles.recipe_wrangles.select.left", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], length: int, output: Union[str, list] = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "length", + "kind": "positional_or_keyword", + "required": true, + "annotation": "int" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Return characters from the left of text. Strings shorter than the length defined will be unaffected.", + "additionalProperties": false, + "required": [ + "input", + "length" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the column(s) to edit" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column(s)" + }, + "length": { + "type": "integer", + "description": "Number of characters to include from the left. If negative, this will remove the specified number of characters from the left. May not equal 0." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "select.length", + "python_symbol": "wrangles.recipe_wrangles.select.length", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list] = None)", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Calculate the lengths of data in a column. The length depends on the data type e.g. text will be the length of the text, lists will be the number of elements in the list.", + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column(s)." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column(s)." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "select.list_element", + "python_symbol": "wrangles.recipe_wrangles.select.list_element", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list] = None, element: int = 0, default: = '') -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "element", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 0 + }, + { + "name": "default", + "kind": "positional_or_keyword", + "required": false, + "annotation": "", + "default": "" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Select a numbered element of a list (zero indexed).", + "additionalProperties": false, + "required": [ + "input", + "element" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column" + }, + "element": { + "type": "integer", + "description": "The numbered element of the list to select.\nStarts from zero.\nThis may use python slicing syntax to select a subset of the list." + }, + "default": { + "type": [ + "string", + "number", + "array", + "object", + "boolean", + "null" + ], + "description": "Set the default value to return if the specified element doesn't exist." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "select.right", + "python_symbol": "wrangles.recipe_wrangles.select.right", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], length: int, output: Union[str, list] = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "length", + "kind": "positional_or_keyword", + "required": true, + "annotation": "int" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Return characters from the right of text. Strings shorter than the length defined will be unaffected.", + "additionalProperties": false, + "required": [ + "input", + "length" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the column(s) to edit" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column(s)" + }, + "length": { + "type": "integer", + "description": "Number of characters to include from the right. If negative, this will remove the specified number of characters from the right. May not equal 0." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "select.sample", + "python_symbol": "wrangles.recipe_wrangles.select.sample", + "signature": "(df: pandas.core.frame.DataFrame, rows: Union[int, float], **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "rows", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[int, float]" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "overwrite_output", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Return a random sample of the rows", + "required": [ + "rows" + ], + "properties": { + "rows": { + "type": [ + "integer", + "number" + ], + "description": "If a whole number, will select that number of rows.\nIf a decimal between 0 and 1 will select that fraction \nof the rows e.g. 0.1 => 10% of rows will be returned", + "exclusiveMinimum": 0 + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "select.substring", + "python_symbol": "wrangles.recipe_wrangles.select.substring", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], start: int = None, length: int = None, output: Union[str, list] = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "start", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": null + }, + { + "name": "length", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": null + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Return characters from the middle of text.", + "additionalProperties": false, + "required": [ + "input", + "start", + "length" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the column(s) to edit" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column(s)" + }, + "start": { + "type": "integer", + "description": "The position of the first character to select.\nIf ommited will start from the beginning and length must \nbe provided.\n", + "minimum": 1 + }, + "length": { + "type": "integer", + "description": "The length of the string to select. If ommited\nwill select to the end of the string and start must be provided.\n", + "minimum": 1 + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "select.tail", + "python_symbol": "wrangles.recipe_wrangles.select.tail", + "signature": "(df: pandas.core.frame.DataFrame, n: int) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "n", + "kind": "positional_or_keyword", + "required": true, + "annotation": "int" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "overwrite_output", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Return the last n rows", + "required": [ + "n" + ], + "properties": { + "n": { + "type": "integer", + "description": "Number of rows to return" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "select.threshold", + "python_symbol": "wrangles.recipe_wrangles.select.threshold", + "signature": "(df: pandas.core.frame.DataFrame, input: list, output: str, threshold: float) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "threshold", + "kind": "positional_or_keyword", + "required": true, + "annotation": "float" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Select the first option if it exceeds a given threshold, else the second option.", + "additionalProperties": false, + "required": [ + "input", + "output", + "threshold" + ], + "properties": { + "input": { + "type": "array", + "description": "List of the input columns to select from" + }, + "output": { + "type": "string", + "description": "Name of the output column" + }, + "threshold": { + "type": "number", + "description": "Threshold above which to choose the first option, otherwise the second", + "minimum": 0, + "maximum": 1 + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "similarity", + "python_symbol": "wrangles.recipe_wrangles.main.similarity", + "signature": "(df: pandas.core.frame.DataFrame, input: list, output: str, method: str = 'cosine') -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "method", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "cosine" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Calculate the cosine similarity of two vectors", + "additionalProperties": false, + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": "array", + "description": "Two columns of vectors to compare the similarity of.", + "minItems": 2, + "maxItems": 2 + }, + "output": { + "type": "string", + "description": "Name of the output column." + }, + "method": { + "type": "string", + "description": "The type of similarity to calculate (cosine or euclidean). Adjusted cosine adjusts the default cosine calculation to cover a range of 0-1 for typical comparisons.", + "enum": [ + "cosine", + "adjusted cosine", + "euclidean" + ] + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "sort", + "python_symbol": "wrangles.recipe_wrangles.pandas.sort", + "signature": "(df: pandas.core.frame.DataFrame, ignore_index=True, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "ignore_index", + "kind": "positional_or_keyword", + "required": false, + "default": true + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "overwrite_output", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Sort the data", + "additionalProperties": true, + "required": [ + "by" + ], + "properties": { + "by": { + "type": [ + "string", + "array" + ], + "description": "Name or list of the column(s) to sort by" + }, + "ascending": { + "type": [ + "boolean", + "array" + ], + "items": { + "type": "boolean" + }, + "description": "Sort ascending vs. descending. Specify a list to sort multiple columns in different orders. If this is a list of bools then it must match the length of the by." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "split.dictionary", + "python_symbol": "wrangles.recipe_wrangles.split.dictionary", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, List], output: Union[str, List] = None, default: dict = None, output_format: str = 'columns') -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, List]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, List]", + "default": null + }, + { + "name": "default", + "kind": "positional_or_keyword", + "required": false, + "annotation": "dict", + "default": null + }, + { + "name": "output_format", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "columns" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Split one or more dictionaries into columns.\nThe dictionary keys will be returned as the new column headers.\nIf the dictionaries contain overlapping values, the last value will be returned.", + "additionalProperties": false, + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or lists of the column(s) containing dictionaries to be split.\nIf providing multiple dictionaries and the dictionaries\ncontain overlapping values, the last value will be returned." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "In columns output_format, this is an optional subset of keys to extract\nfrom the dictionary. If not provided, all keys will be returned.\nColumns can be renamed with the following syntax:\noutput:\n - key1: new_column_name1\n - key2: new_column_name2\nIn to_lists output_format, this must be two output columns for the keys\nand values lists. If not provided, Keys and Values will be used." + }, + "default": { + "type": "object", + "description": "Provide a set of default headings and values if they are not found within the input" + }, + "output_format": { + "type": "string", + "enum": [ + "columns", + "to_lists" + ], + "description": "How to split the dictionary.\ncolumns creates one output column for each dictionary key.\nto_lists creates two output columns containing lists of keys and values." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "split.list", + "python_symbol": "wrangles.recipe_wrangles.split.list", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int], output: Union[str, List]) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, List]" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Split a list in a single column to multiple columns.", + "additionalProperties": false, + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": [ + "string", + "int" + ], + "description": "Name of the column to be split" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of column(s) for the results. If providing a single column, use a wildcard (*) to indicate a incrementing integer" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "split.text", + "python_symbol": "wrangles.recipe_wrangles.split.text", + "signature": "(df: pandas.core.frame.DataFrame, input: str, output: Union[str, List] = None, char: str = ',', pad: bool = None, element: Union[int, str] = None, inclusive: bool = False, skip_empty: bool = False) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, List]", + "default": null + }, + { + "name": "char", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "," + }, + { + "name": "pad", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": null + }, + { + "name": "element", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[int, str]", + "default": null + }, + { + "name": "inclusive", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "skip_empty", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Split a string to multiple columns or a list.", + "additionalProperties": false, + "required": [ + "input" + ], + "properties": { + "input": { + "type": "string", + "description": "Name of the column to be split" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column(s)\nIf a single column is provided,\nthe results will be returned as a list\nIf multiple columns are listed,\nthe results will be separated into the columns.\nIf omitted, will overwrite the input." + }, + "char": { + "type": "string", + "description": "Set the character(s) to split on.\nDefault comma (,)\nCan also prefix with \"regex:\" to split on a pattern." + }, + "pad": { + "type": "boolean", + "description": "Choose whether to pad to ensure a consistent length. Default true if outputting to columns, false for lists." + }, + "element": { + "type": [ + "integer", + "string" + ], + "description": "Select a specific element or range after splitting using slicing syntax. e.g. 0, \":5\", \"5:\", \"2:8:2\"" + }, + "inclusive": { + "type": "boolean", + "description": "If true, include the split character in the output. Default False" + }, + "skip_empty": { + "type": "boolean", + "description": "Whether to skip empty values", + "default": false + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "split.tokenize", + "python_symbol": "wrangles.recipe_wrangles.split.tokenize", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, List], output: Union[str, List] = None, method: str = 'space', functions: dict = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, List]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, List]", + "default": null + }, + { + "name": "method", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "space" + } + ], + "internal_parameters": [ + "df", + "functions" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Split text into tokens. A variety of methods are available. The default method is to split on spaces.", + "additionalProperties": false, + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Column(s) to be split into tokens" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column" + }, + "method": { + "anyOf": [ + { + "type": "string", + "enum": [ + "space", + "boundary", + "boundary_ignore_space" + ], + "description": "Method to split the list. Options: space, boundary, boundary_ignore_space or use a custom function with custom. or use a regex pattern with regex:" + }, + { + "type": "string", + "description": "Method to split the list. Options: space, boundary, boundary_ignore_space or use a custom function with custom. or use a regex pattern with regex:" + } + ] + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "sql", + "python_symbol": "wrangles.recipe_wrangles.main.sql", + "signature": "(df: pandas.core.frame.DataFrame, command: str, params: Union[list, dict] = None, preserve_index: bool = False, preserve_data_types: bool = True) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "command", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "params", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[list, dict]", + "default": null + }, + { + "name": "preserve_index", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "preserve_data_types", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "overwrite_output", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Apply a SQL command to the current dataframe. Only SELECT statements are supported - the result will be the output.", + "additionalProperties": false, + "required": [ + "command" + ], + "properties": { + "command": { + "type": "string", + "description": "SQL Command. The table is called df. For specific SQL syntax, this uses the SQLite dialect." + }, + "params": { + "type": [ + "array", + "object" + ], + "description": "Variables to use in conjunctions with query.\nThis allows the query to be parameterized.\nThis uses sqlite syntax (? or :name)" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "standardize", + "python_symbol": "wrangles.recipe_wrangles.main.standardize", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], model_id: Union[str, list], output: Union[str, list] = None, case_sensitive: bool = False, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "model_id", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "case_sensitive", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Standardize data using a DIY or bespoke standardization wrangle. Requires WrangleWorks Account and Subscription.", + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input columns." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of output columns" + }, + "model_id": { + "type": [ + "string", + "array" + ], + "description": "The ID of the wrangle to use (do not include 'find' and 'replace')" + }, + "case_sensitive": { + "type": "boolean", + "description": "Allows the wrangle to be case sensitive if set to True, default is False." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "standardize.clean", + "python_symbol": "wrangles.recipe_wrangles.standardize.clean", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, int, list] = None, fix_encoding: bool = True, unescape_html: Union[str, bool] = 'auto', normalization: str = 'NFC', fix_character_width: bool = True, uncurl_quotes: bool = True, remove_control_chars: bool = True, collapse_whitespace: bool = True, preserve_line_breaks: bool = False, trim: bool = True, separator: str = ' ', **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, int, list]", + "default": null + }, + { + "name": "fix_encoding", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + }, + { + "name": "unescape_html", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, bool]", + "default": "auto" + }, + { + "name": "normalization", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "NFC" + }, + { + "name": "fix_character_width", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + }, + { + "name": "uncurl_quotes", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + }, + { + "name": "remove_control_chars", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + }, + { + "name": "collapse_whitespace", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + }, + { + "name": "preserve_line_breaks", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "trim", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + }, + { + "name": "separator", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": " " + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Repair common encoding, Unicode, HTML character reference, control character, and whitespace problems locally.", + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input columns." + }, + "output": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of output columns. Defaults to overwriting input." + }, + "fix_encoding": { + "type": "boolean", + "default": true, + "description": "Repair mojibake and other reversible encoding errors." + }, + "unescape_html": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "string", + "enum": [ + "auto" + ] + } + ], + "default": "auto", + "description": "Decode HTML character references. Auto avoids decoding text that appears to contain HTML markup." + }, + "normalization": { + "type": [ + "string", + "null" + ], + "enum": [ + "NFC", + "NFKC", + "NFD", + "NFKD", + null + ], + "default": "NFC", + "description": "Unicode normalization form." + }, + "fix_character_width": { + "type": "boolean", + "default": true, + "description": "Normalize fullwidth and halfwidth characters." + }, + "uncurl_quotes": { + "type": "boolean", + "default": true, + "description": "Replace typographic quotes with straight quotes." + }, + "remove_control_chars": { + "type": "boolean", + "default": true, + "description": "Remove C0 and C1 control characters." + }, + "collapse_whitespace": { + "type": "boolean", + "default": true, + "description": "Collapse runs of Unicode whitespace." + }, + "preserve_line_breaks": { + "type": "boolean", + "default": false, + "description": "Preserve line breaks while collapsing other whitespace." + }, + "trim": { + "type": "boolean", + "default": true, + "description": "Remove leading and trailing whitespace." + }, + "separator": { + "type": "string", + "default": " ", + "description": "Text used to join multiple input columns into one output." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "standardize.custom", + "python_symbol": "wrangles.recipe_wrangles.standardize.custom", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], model_id: Union[str, list], output: Union[str, list] = None, case_sensitive: bool = False, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "model_id", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "case_sensitive", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Standardize data using a DIY or bespoke standardization wrangle. Requires WrangleWorks Account and Subscription.", + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input columns." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of output columns" + }, + "model_id": { + "type": [ + "string", + "array" + ], + "description": "The ID of the wrangle to use (do not include 'find' and 'replace')" + }, + "case_sensitive": { + "type": "boolean", + "description": "Allows the wrangle to be case sensitive if set to True, default is False." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "translate", + "python_symbol": "wrangles.recipe_wrangles.main.translate", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list], target_language: str, source_language: str = 'AUTO', case: str = None, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "target_language", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "source_language", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "AUTO" + }, + { + "name": "case", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Translate the input to a different language. Requires WrangleWorks Account and DeepL API Key (A free account for up to 500,000 characters per month is available).", + "additionalProperties": false, + "required": [ + "input", + "output", + "target_language" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the column to translate" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column" + }, + "target_language": { + "type": "string", + "description": "Code of the language to translate to", + "enum": [ + "Bulgarian", + "Chinese", + "Czech", + "Danish", + "Dutch", + "English (American)", + "English (British)", + "Estonian", + "Finnish", + "French", + "German", + "Greek", + "Hungarian", + "Italian", + "Japanese", + "Latvian", + "Lithuanian", + "Polish", + "Portuguese", + "Portuguese (Brazilian)", + "Romanian", + "Russian", + "Slovak", + "Slovenian", + "Spanish", + "Swedish" + ] + }, + "source_language": { + "type": "string", + "description": "Code of the language to translate from. If omitted, automatically detects the input language", + "enum": [ + "Auto", + "Bulgarian", + "Chinese", + "Czech", + "Danish", + "Dutch", + "English", + "Estonian", + "Finnish", + "French", + "German", + "Greek", + "Hungarian", + "Italian", + "Japanese", + "Latvian", + "Lithuanian", + "Polish", + "Portuguese", + "Romanian", + "Russian", + "Slovak", + "Slovenian", + "Spanish", + "Swedish" + ] + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "transpose", + "python_symbol": "wrangles.recipe_wrangles.pandas.transpose", + "signature": "(df: pandas.core.frame.DataFrame, header_column=0) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "header_column", + "kind": "positional_or_keyword", + "required": false, + "default": 0 + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "overwrite_output", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Transpose the DataFrame (swap columns to rows)", + "additionalProperties": false, + "properties": { + "header_column": { + "type": [ + "string", + "integer", + null + ], + "description": "Name or position of the column that will be used as the column headings for the transposed DataFrame. Default 0 (first column). Use header_column = null to not use any column as header." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "try", + "python_symbol": "wrangles.recipe_wrangles.main.Try", + "signature": "(df: pandas.core.frame.DataFrame, wrangles: list, functions: Union[function, list, dict] = None, variables: dict = None, retries: int = 0, **kwargs)", + "parameters": [ + { + "name": "wrangles", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "retries", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 0 + } + ], + "internal_parameters": [ + "df", + "functions", + "variables" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Try a list of wrangles and catch any errors that occur", + "required": [ + "wrangles" + ], + "properties": { + "wrangles": { + "type": "array", + "description": "List of wrangles to apply", + "minItems": 1, + "items": { + "$ref": "#/$defs/wrangles/items" + } + }, + "except": { + "type": [ + "object" + ], + "description": "An action to take if the wrangles encounter an error.\nThis can contain a list of wrangles or a dictionary of column names and values.\nIf except is not provided, the error will be logged and the recipe will continue.", + "minItems": 1, + "items": { + "$ref": "#/$defs/wrangles/items" + } + }, + "retries": { + "type": "integer", + "description": "Number of times to retry the wrangles if an error occurs. Default 0.", + "minimum": 0 + } + } + }, + "plain_docstring": null + } + ] +} diff --git a/registry/schema/wrangle-entry.schema.json b/registry/schema/wrangle-entry.schema.json new file mode 100644 index 0000000..bfaa13b --- /dev/null +++ b/registry/schema/wrangle-entry.schema.json @@ -0,0 +1,179 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://docs.wrangles.com/registry/schema/wrangle-entry.schema.json", + "title": "Wrangles Registry entry", + "type": "object", + "additionalProperties": false, + "required": [ + "schema_version", + "type", + "id", + "wrangle_name", + "namespace", + "title", + "description", + "wrangle_key", + "aliases", + "slug", + "status", + "visibility", + "tags", + "runtime", + "access", + "capabilities", + "parameters", + "examples", + "sources" + ], + "properties": { + "schema_version": {"const": "0.1"}, + "type": {"const": "wrangle"}, + "id": { + "type": ["string", "null"], + "format": "uuid", + "description": "Canonical UUID allocated by the Wrangles catalog database. Null is allowed only while an existing wrangle awaits database identity reconciliation." + }, + "wrangle_name": { + "type": "string", + "pattern": "^[a-z][a-z0-9_]*$" + }, + "namespace": { + "type": ["string", "null"], + "pattern": "^[a-z][a-z0-9_]*$", + "description": "Executable prefix of a dotted recipe key, or null for a current root-level runtime key." + }, + "title": {"type": "string", "minLength": 1}, + "description": {"type": "string", "minLength": 1}, + "wrangle_key": { + "type": "string", + "pattern": "^[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)*$" + }, + "aliases": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "pattern": "^[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)*$" + } + }, + "slug": { + "type": "string", + "pattern": "^[a-z0-9]+(?:[a-z0-9_-]*[a-z0-9])?(?:/[a-z0-9]+(?:[a-z0-9_-]*[a-z0-9])?)*$" + }, + "status": { + "enum": ["draft", "active", "deprecated", "removed"] + }, + "visibility": { + "enum": ["public", "internal"] + }, + "tags": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": {"type": "string", "minLength": 1} + }, + "runtime": { + "type": "object", + "additionalProperties": false, + "required": ["package", "symbol", "contract_status"], + "properties": { + "package": {"type": "string", "minLength": 1}, + "symbol": {"type": "string", "minLength": 1}, + "contract_status": { + "enum": ["awaiting-manifest", "verified"] + } + } + }, + "access": { + "type": "object", + "additionalProperties": false, + "required": [ + "ai_powered", + "requires_account", + "requires_subscription", + "requires_external_api_key" + ], + "properties": { + "ai_powered": {"type": "boolean"}, + "requires_account": {"type": "boolean"}, + "requires_subscription": {"type": "boolean"}, + "requires_external_api_key": {"type": "boolean"} + } + }, + "capabilities": { + "type": "object", + "additionalProperties": {"type": "boolean"} + }, + "parameters": { + "type": "array", + "items": {"$ref": "#/$defs/parameter"} + }, + "examples": { + "type": "array", + "items": {"$ref": "#/$defs/example"} + }, + "sources": { + "type": "array", + "minItems": 1, + "items": {"$ref": "#/$defs/source"} + } + }, + "$defs": { + "parameter": { + "type": "object", + "additionalProperties": false, + "required": ["name", "description", "required", "role", "schema"], + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "name_pattern": { + "type": "string", + "minLength": 1, + "description": "JSON Schema regular expression for a documented family of dynamic keyword names." + }, + "description": {"type": "string", "minLength": 1}, + "required": {"type": "boolean"}, + "role": {"type": "string", "minLength": 1}, + "runtime_default": {}, + "schema": {"type": "object", "minProperties": 1} + } + }, + "example": { + "type": "object", + "additionalProperties": false, + "required": [ + "id", + "title", + "recipe", + "input_fixture", + "output_fixture", + "verification" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$" + }, + "title": {"type": "string", "minLength": 1}, + "recipe": {"type": "string", "minLength": 1}, + "input_fixture": {"type": "string", "minLength": 1}, + "output_fixture": {"type": "string", "minLength": 1}, + "verification": { + "enum": ["static", "offline", "live", "manual"] + } + } + }, + "source": { + "type": "object", + "additionalProperties": false, + "required": ["id", "resource"], + "properties": { + "id": {"type": "string", "minLength": 1}, + "resource": {"type": "string", "minLength": 1}, + "title": {"type": "string"} + } + } + } +} diff --git a/registry/schema/wrangles-runtime-manifest.schema.json b/registry/schema/wrangles-runtime-manifest.schema.json new file mode 100644 index 0000000..17d1793 --- /dev/null +++ b/registry/schema/wrangles-runtime-manifest.schema.json @@ -0,0 +1,109 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://docs.wrangles.com/registry/schema/wrangles-runtime-manifest.schema.json", + "title": "WranglesPY recipe-wrangle runtime manifest", + "type": "object", + "additionalProperties": false, + "required": [ + "$schema", + "format", + "format_version", + "source", + "entry_count", + "wrangles" + ], + "properties": { + "$schema": {"type": "string", "format": "uri"}, + "format": {"const": "wrangles-runtime-manifest"}, + "format_version": {"const": "0.1"}, + "source": { + "type": "object", + "additionalProperties": false, + "required": ["repository", "revision"], + "properties": { + "repository": {"type": "string", "format": "uri"}, + "revision": {"type": "string", "minLength": 1} + } + }, + "entry_count": {"type": "integer", "minimum": 0}, + "wrangles": { + "type": "array", + "items": {"$ref": "#/$defs/wrangle"} + } + }, + "$defs": { + "wrangle": { + "type": "object", + "additionalProperties": false, + "required": [ + "runtime_key", + "python_symbol", + "signature", + "parameters", + "internal_parameters", + "variadic", + "capabilities", + "where_mode", + "docstring_schema_status", + "docstring_schema", + "plain_docstring" + ], + "properties": { + "runtime_key": { + "type": "string", + "pattern": "^[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)*$" + }, + "python_symbol": {"type": "string", "minLength": 1}, + "signature": {"type": "string", "minLength": 1}, + "parameters": { + "type": "array", + "items": {"$ref": "#/$defs/parameter"} + }, + "internal_parameters": { + "type": "array", + "uniqueItems": true, + "items": {"type": "string", "minLength": 1} + }, + "variadic": { + "type": "object", + "additionalProperties": false, + "required": ["positional", "keyword"], + "properties": { + "positional": {"type": ["string", "null"]}, + "keyword": {"type": ["string", "null"]} + } + }, + "capabilities": { + "type": "object", + "additionalProperties": false, + "required": ["if", "where", "where_params"], + "properties": { + "if": {"type": "boolean"}, + "where": {"type": "boolean"}, + "where_params": {"type": "boolean"} + } + }, + "where_mode": { + "enum": ["filter", "overwrite_output", "unsupported"] + }, + "docstring_schema_status": {"enum": ["available", "missing"]}, + "docstring_schema": {"type": ["object", "null"]}, + "plain_docstring": {"type": ["string", "null"]} + } + }, + "parameter": { + "type": "object", + "additionalProperties": false, + "required": ["name", "kind", "required"], + "properties": { + "name": {"type": "string", "minLength": 1}, + "kind": { + "enum": ["positional_only", "positional_or_keyword", "keyword_only"] + }, + "required": {"type": "boolean"}, + "annotation": {"type": "string", "minLength": 1}, + "default": {} + } + } + } +} diff --git a/registry/wrangles/_root/accordion.md b/registry/wrangles/_root/accordion.md new file mode 100644 index 0000000..73e57e8 --- /dev/null +++ b/registry/wrangles/_root/accordion.md @@ -0,0 +1,133 @@ +--- +schema_version: '0.1' +type: wrangle +id: null +wrangle_name: accordion +namespace: null +title: Accordion +description: >- + Apply a series of wrangles to column(s) containing lists. The wrangles will be applied to each + element in the list and the results will be returned back as a list. +wrangle_key: accordion +aliases: [] +slug: accordion +status: active +visibility: public +tags: + - utility + - accordion +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.accordion + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: wrangles + description: List of wrangles to apply. + required: true + role: nested-wrangles + schema: + type: array + minItems: 1 + items: + $ref: '#/$defs/wrangles/items' + - name: input + description: The column(s) containing the list(s) that the wrangles will be applied to the elements of. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Output of the wrangles to save back to the dataframe. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: propagate + description: >- + Limit the column(s) that will be available to the wrangles and replicated for each element. If + not specified, all columns will be propogated. This may be useful to limit the memory use for + large datasets. + required: false + role: option + runtime_default: null + schema: + type: + - string + - array + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY accordion implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/utility/_sources/accordion.md + title: Existing accordion Markdown +--- + +# Accordion + +Apply a series of wrangles to the individual elements of one or more lists. + +## Migrated examples +#### Apply Convert Case to List Elements + +This example applies `convert.case` to each string in a list, where the wrangle would not normally operate on the list as a whole. + +##### Recipe + +```yaml +wrangles: + - accordion: + input: list_column + output: modified_lists + wrangles: + - convert.case: + input: list_column + output: modified_lists + case: upper +``` + +
+ +
+ +##### Input Sample + +| list_column | +| --- | +| ["a", "b", "c"] | +| ["e", "f", "g"] | + +
+ +
+ +##### Output Sample + +| list_column | modified_lists | +| --- | --- | +| ["a", "b", "c"] | ["A", "B", "C"] | +| ["e", "f", "g"] | ["E", "F", "G"] | + +
+ +
diff --git a/registry/wrangles/_root/batch.md b/registry/wrangles/_root/batch.md new file mode 100644 index 0000000..f17bbec --- /dev/null +++ b/registry/wrangles/_root/batch.md @@ -0,0 +1,151 @@ +--- +schema_version: '0.1' +type: wrangle +id: null +wrangle_name: batch +namespace: null +title: Batch +description: >- + Split the data into batches for executing a list of wrangles. Use this in situations such as where + the intermediate data is too large to fit in memory. +wrangle_key: batch +aliases: [] +slug: batch +status: active +visibility: public +tags: + - utility + - batch +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.batch + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: wrangles + description: >- + The wrangles to execute on the data. Each series of wrangles will be run against the data in + batches of the size defined by batch_size. + required: true + role: nested-wrangles + schema: + type: array + minItems: 1 + items: + $ref: '#/$defs/wrangles/items' + - name: batch_size + description: The number of rows to split each batch into. + required: false + role: option + runtime_default: 1000 + schema: + type: integer + - name: threads + description: The number of threads to use for parallel processing. Default 1. + required: false + role: option + runtime_default: 1 + schema: + type: integer + - name: on_error + description: >- + A dictionary of column_name: value to return if an error occurs while attempting to run a + batch. + required: false + role: fallback-value + runtime_default: null + schema: + type: + - object + - 'null' + - name: timeout + description: The number of seconds to wait for a batch to complete before raising an error. + required: false + role: option + runtime_default: null + schema: + type: + - number + - 'null' + - name: use_multiprocessing + description: Use process-based workers instead of threads. This is an advanced runtime option. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY batch implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/utility/_sources/batch.md + title: Existing batch Markdown +--- + +# Batch + +Execute a series of wrangles in batches. Batches can run in parallel with `threads` and can provide fallback output when an error occurs. + +## Migrated examples +#### Batch an Extract AI Wrangle + +This example processes product descriptions in batches of two rows. + +##### Recipe + +```yaml +wrangles: + - batch: + batch_size: 2 + threads: 1 + wrangles: + - extract.ai: + api_key: Your OpenAI API key + input: Product Description + output: + Title: + type: string + description: Title of the product +``` + +
+ +
+ +##### Input Sample + +| Product Description | +| --- | +| Sleep better with our Memory Foam Pillow, designed to contour to your head and neck. | +| Stay comfortable and stylish with our Organic Cotton T-Shirt, made from soft, breathable fabric. | +| Keep drinks hot or cold with our Stainless Steel Water Bottle, featuring durable insulation. | +| Enjoy crisp sound and long battery life with our Wireless Bluetooth Earbuds. | + +
+ +
+ +##### Output Sample + +| Product Description | Title | +| --- | --- | +| Sleep better with our Memory Foam Pillow, designed to contour to your head and neck. | Memory Foam Pillow | +| Stay comfortable and stylish with our Organic Cotton T-Shirt, made from soft, breathable fabric. | Organic Cotton T-Shirt | +| Keep drinks hot or cold with our Stainless Steel Water Bottle, featuring durable insulation. | Stainless Steel Water Bottle | +| Enjoy crisp sound and long battery life with our Wireless Bluetooth Earbuds. | Wireless Bluetooth Earbuds | + +
+ +
diff --git a/registry/wrangles/_root/classify.md b/registry/wrangles/_root/classify.md new file mode 100644 index 0000000..9dffa3c --- /dev/null +++ b/registry/wrangles/_root/classify.md @@ -0,0 +1,114 @@ +--- +schema_version: '0.1' +type: wrangle +id: 06669ef8-cdd1-42f7-8078-98e0b7a42c30 +wrangle_name: classify +namespace: null +title: Classify +description: Run classify wrangles on the specified columns. Requires WrangleWorks Account and Subscription. +wrangle_key: classify +aliases: [] +slug: classify +status: active +visibility: public +tags: + - ai + - classify +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.classify + contract_status: verified +access: + ai_powered: false + requires_account: true + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output column. + required: true + role: column-output + schema: + type: + - string + - array + - name: model_id + description: ID of the classification model to be used. + required: true + role: model-reference + schema: + type: string + - name: include_confidence + description: For models that support it, include the confidence level in the output. + required: false + role: option + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY classify implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/ai/_sources/classify.md + title: Existing classify Markdown +--- + +# Classify + +Run a custom classification wrangle on the specified column or columns. A classification wrangle must be trained first. + +## Migrated examples +#### Food Type Example + +##### Recipe + +```yaml +wrangles: + - classify: + input: Products + output: Category + model_id: ${model_id} + where: Products = Milk +``` + +
+ +
+ +##### Input Sample + +| Products | +| --- | +| Rice | +| Milk | + +
+ +
+ +##### Output Sample + +| Products | Category | +| --- | --- | +| Rice | | +| Milk | Dairy | + +
+ +
diff --git a/registry/wrangles/_root/clean-whitespaces.md b/registry/wrangles/_root/clean-whitespaces.md new file mode 100644 index 0000000..5be4c43 --- /dev/null +++ b/registry/wrangles/_root/clean-whitespaces.md @@ -0,0 +1,117 @@ +--- +schema_version: '0.1' +type: wrangle +id: e36e15c4-f0ad-43f8-8555-ef683a8ab892 +wrangle_name: clean_whitespaces +namespace: null +title: Clean Whitespaces +description: >- + Condense multiple spaces to a single space and convert special space characters to a standard + space. +wrangle_key: clean_whitespaces +aliases: [] +slug: clean-whitespaces +status: active +visibility: public +tags: + - format + - clean-whitespaces +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.clean_whitespaces + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name or list of input columns. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name or list of output columns. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: trim + description: Whether to trim leading and trailing spaces. Default True. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: remove_literals + description: Whether to remove special space characters such as new lines etc. Default True. + required: false + role: option + runtime_default: true + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY clean_whitespaces implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/clean-whitespaces.md + title: Existing clean_whitespaces Markdown +--- + +# Clean Whitespaces + +Condense multiple spaces to a single space and convert special space characters to a standard space. + +## Migrated examples +#### Food Type Example + +##### Recipe + +```yaml +wrangles: + - clean_whitespaces: + input: Products +``` + +
+ +
+ +##### Input Sample + +| Products | +| --- | +| `Hello world!` | +| `Hello universe!` | + +
+ +
+ +##### Output Sample + +| Products | +| --- | +| Hello world! | +| Hello universe! | + +
+ +
diff --git a/registry/wrangles/_root/concurrent.md b/registry/wrangles/_root/concurrent.md new file mode 100644 index 0000000..05a1f18 --- /dev/null +++ b/registry/wrangles/_root/concurrent.md @@ -0,0 +1,119 @@ +--- +schema_version: '0.1' +type: wrangle +id: null +wrangle_name: concurrent +namespace: null +title: Concurrent +description: >- + Run multiple wrangles concurrently rather than sequentially. Wrangles must specify output columns + to be used concurrently. When using concurrent, Wrangles may not complete in a predictable order + and it is not recommended to update overlapping columns with different wrangles. +wrangle_key: concurrent +aliases: [] +slug: concurrent +status: active +visibility: public +tags: + - utility + - concurrent +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.concurrent + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: wrangles + description: The wrangles section of a recipe to execute for each combination of variables. + required: true + role: nested-wrangles + schema: + type: array + minItems: 1 + items: + $ref: '#/$defs/wrangles/items' + - name: max_concurrency + description: The maximum number of wrangles to execute in parallel. + required: false + role: option + runtime_default: 10 + schema: + type: integer + minimum: 1 + - name: use_multiprocessing + description: Use process-based workers instead of threads. This is an advanced runtime option. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY concurrent implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/utility/_sources/concurrent.md + title: Existing concurrent Markdown +--- + +# Concurrent + +Run multiple wrangles concurrently instead of sequentially. Concurrent wrangles must declare output columns, may finish in any order, and should not update overlapping columns. + +See the [Concurrent connector](/python/connectors/concurrent) for the connector equivalent. + +## Migrated examples +#### Run Extraction Wrangles Concurrently + +##### Recipe + +```yaml +wrangles: + - concurrent: + wrangles: + - extract.codes: + input: Products + output: Part Codes + - extract.attributes: + input: Products + output: Attributes +``` + +
+ +
+ +##### Input Sample + +| Products | +| --- | +| SKF ball brg 2" od 6202 | +| brg seal 1" id 5493 | +| 3lb hammer 87102 | + +
+ +
+ +##### Output Sample + +| Products | Part Codes | Attributes | +| --- | --- | --- | +| SKF ball brg 2" od 6202 | 6202 | `{"length":["2in"]}` | +| brg seal 1" id 5493 | 5493 | `{"length":["1in"]}` | +| 3lb hammer 87102 | 87102 | `{"weight":["3lb"]}` | + +
+ +
diff --git a/registry/wrangles/_root/copy.md b/registry/wrangles/_root/copy.md new file mode 100644 index 0000000..f9d8764 --- /dev/null +++ b/registry/wrangles/_root/copy.md @@ -0,0 +1,140 @@ +--- +schema_version: '0.1' +type: wrangle +id: b002fbdc-92c0-4347-889d-0f4bfeec99fa +wrangle_name: copy +namespace: null +title: Copy +description: Make a copy of a column or a list of columns. +wrangle_key: copy +aliases: [] +slug: copy +status: active +visibility: public +tags: + - transform + - copy +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.pandas.copy + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input columns or columns. + required: false + role: column-selector + runtime_default: null + schema: + type: + - string + - integer + - array + - 'null' + - name: output + description: Name of the output columns or columns. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/pandas.py + title: WranglesPY copy implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/transform/_sources/copy.md + title: Existing copy Markdown +--- + +# Copy + +Create a copy of columns in a dataframe. + +## Migrated examples +#### Copying a Column With Input and Output + +##### Recipe + +```yaml +wrangles: + - copy: + input: Product Data + output: Product Data (copy) +``` + +
+ +
+ +##### Input Sample + +| Product Data | +| --- | +| SKF ball brg | +| brg seal | + +
+ +
+ +##### Output Sample + +| Product Data | Product Data (copy) | +| --- | --- | +| SKF ball bearing | SKF ball bearing | +| bearing seal | bearing seal | + +
+ +
+ +#### Copying a Column Express as a Dictionary + +##### Recipe + +```yaml +wrangles: + - copy: + Product Data: Product Data (copy) +``` + +
+ +
+ +##### Input Sample + +| Product Data | +| --- | +| SKF ball brg | +| brg seal | + +
+ +
+ +##### Output Sample + +| Product Data | Product Data (copy) | +| --- | --- | +| SKF ball bearing | SKF ball bearing | +| bearing seal | bearing seal | + +
+ +
diff --git a/registry/wrangles/_root/date-calculator.md b/registry/wrangles/_root/date-calculator.md new file mode 100644 index 0000000..d0d7987 --- /dev/null +++ b/registry/wrangles/_root/date-calculator.md @@ -0,0 +1,136 @@ +--- +schema_version: '0.1' +type: wrangle +id: 19cfeb4f-02af-4ab2-895c-0ff2bb5cce19 +wrangle_name: date_calculator +namespace: null +title: Date Calculator +description: Add or Subtract time from a date. +wrangle_key: date_calculator +aliases: [] +slug: date-calculator +status: active +visibility: public +tags: + - date + - date-calculator +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.date_calculator + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the dates column. + required: true + role: column-selector + schema: + type: string + - name: operation + description: Date operation. + required: false + role: option + runtime_default: add + schema: + type: string + enum: + - add + - subtract + - name: output + description: Name of the output column of dates. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - 'null' + - name: time_unit + description: Time unit for operation. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + enum: + - years + - months + - weeks + - days + - hours + - minutes + - seconds + - milliseconds + - name: time_value + description: Time unit value for operation. + required: false + role: option + runtime_default: null + schema: + type: + - number + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY date_calculator implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/date/_sources/date-calculator.md + title: Existing date_calculator Markdown +--- + +# Date Calculator + +Add or subtract time from a date. + +## Migrated examples +#### Calculating a Future Date + +##### Recipe + +```yaml +wrangles: + - date_calculator: + input: Date + output: New Date + operation: subtract # Optional default is addition + time_unit: days + time_value: 1 +``` + +
+ +
+ +##### Input Sample + +| Date | +| --- | +| 2022-12-26 | + +
+ +
+ +##### Output Sample + +| New Date | +| --- | +| 2022-12-25 | + +
+ +
diff --git a/registry/wrangles/_root/drop.md b/registry/wrangles/_root/drop.md new file mode 100644 index 0000000..f27d9ec --- /dev/null +++ b/registry/wrangles/_root/drop.md @@ -0,0 +1,91 @@ +--- +schema_version: '0.1' +type: wrangle +id: 363bffbf-397e-4975-8382-e9efa5e9eed6 +wrangle_name: drop +namespace: null +title: Drop +description: Drop (Delete) selected column(s). +wrangle_key: drop +aliases: [] +slug: drop +status: active +visibility: public +tags: + - select + - drop +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.pandas.drop + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: false + where_params: false +parameters: + - name: columns + description: Name of the column(s) to drop. + required: true + role: option + schema: + type: + - string + - array +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/pandas.py + title: WranglesPY drop implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/drop.md + title: Existing drop Markdown +--- + +# Drop + +Drop (Delete) selected column(s) + +## Migrated examples +#### Dropping a Column + +##### Recipe + +```yaml +wrangles: + - drop: + columns: + - Material +``` + +
+ +
+ +##### Input Sample + +| Material | Product Data | +| --- | --- | +| Ceramic | SKF ball brg | +| Rubber | brg seal | + +
+ +
+ +##### Output Sample + +| Product Data | +| --- | +| SKF ball bearing | +| bearing seal | + +
+ +
diff --git a/registry/wrangles/_root/explode.md b/registry/wrangles/_root/explode.md new file mode 100644 index 0000000..f743d1c --- /dev/null +++ b/registry/wrangles/_root/explode.md @@ -0,0 +1,114 @@ +--- +schema_version: '0.1' +type: wrangle +id: 4e4b13ac-8d50-4b2c-85c8-2c31de1e817d +wrangle_name: explode +namespace: null +title: Explode +description: Explode a column of lists into rows. +wrangle_key: explode +aliases: [] +slug: explode +status: active +visibility: public +tags: + - split + - explode +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.pandas.explode + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: >- + Name of the column(s) to explode. If multiple columns are included they must contain lists of + the same length. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: reset_index + description: Reset the index after exploding. Default True. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: drop_empty + description: >- + If true, any rows that contain an empty list will be dropped. If false, rows that contain + empty lists will keep 1 row with an empty value. Default False. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/pandas.py + title: WranglesPY explode implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/split/_sources/explode.md + title: Existing explode Markdown +--- + +# Explode + +Explode a column of lists into rows + +## Migrated examples +#### Exploding a Column + +##### Recipe + +```yaml +wrangles: + - explode: + input: Products +``` + +
+ +
+ +##### Input Sample + +| Products | Manufacturer | +| --- | --- | +| [Ball Bearing, Bearing Seal] | SKF | +| [Angle Grinder, Drill, Impact Driver] | Milwaukee | +| Solid State Relay | Schneider | + +
+ +
+ +##### Output Sample + +| Products | Manufacturer | +| --- | --- | +| Ball Bearing | SKF | +| Bearing Seal | SKF | +| Angle Grinder | Milwaukee | +| Drill | Milwaukee | +| Impact Driver | Milwaukee | +| Solid State Relay | Schneider | + +
+ +
diff --git a/registry/wrangles/_root/filter.md b/registry/wrangles/_root/filter.md new file mode 100644 index 0000000..453b311 --- /dev/null +++ b/registry/wrangles/_root/filter.md @@ -0,0 +1,221 @@ +--- +schema_version: '0.1' +type: wrangle +id: e3242acf-d204-433f-8373-205b77481131 +wrangle_name: filter +namespace: null +title: Filter +description: >- + Filter the dataframe based on the contents. If multiple filters are specified, all must be + correct. For complex filters, use the where parameter. +wrangle_key: filter +aliases: [] +slug: filter +status: active +visibility: public +tags: + - select + - filter +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.filter + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the column to filter on. If multiple are provided, all must match the criteria. + required: false + role: column-selector + runtime_default: [] + schema: + type: + - string + - integer + - array + - name: equal + description: Select rows where the values equal a given value. + required: false + role: option + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: not_equal + description: Select rows where the values do not equal a given value. + required: false + role: option + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: is_in + description: Select rows where the values are in a given list. + required: false + role: option + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: not_in + description: Select rows where the values are not in a given list. + required: false + role: option + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: greater_than + description: >- + Select rows where the values are greater than a specified value. Does include the value + itself. + required: false + role: option + runtime_default: null + schema: + type: + - integer + - number + - 'null' + - name: greater_than_equal_to + description: >- + Select rows where the values are greater than a specified value. Does include the value + itself. + required: false + role: option + runtime_default: null + schema: + type: + - integer + - number + - 'null' + - name: less_than + description: >- + Select rows where the values are less than a specified value. Does not include the value + itself. + required: false + role: option + runtime_default: null + schema: + type: + - integer + - number + - 'null' + - name: less_than_equal_to + description: Select rows where the values are less than a specified value. Does include the value itself. + required: false + role: option + runtime_default: null + schema: + type: + - integer + - number + - 'null' + - name: between + description: Value or list of values to filter that are in between two parameter values. + required: false + role: option + runtime_default: null + schema: + type: + - array + - 'null' + - name: contains + description: Select rows where the input contains the value. Allows regular expressions. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + - name: not_contains + description: Select rows where the input does not contain the value. Allows regular expressions. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + - name: is_null + description: If true, select all rows where the value is NULL. If false, where is not NULL. + required: false + role: option + runtime_default: null + schema: + type: + - boolean + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY filter implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/filter.md + title: Existing filter Markdown +--- + +# Filter + +Filter the dataframe based on the contents. + +## Migrated examples +#### Filtering a Column + +##### Recipe + +```yaml +wrangles: + # Select only red fruits + - filter: + input: Color + equal: + - red +``` + +
+ +
+ +##### Input Sample + +| Color | Fruit | +| --- | --- | +| red | Apple | +| green | Apple | +| orange | Orange | +| red | Strawberry | + +
+ +
+ +##### Output Sample + +| Color | Fruit | +| --- | --- | +| red | Apple | +| red | Strawberry | + +
+ +
diff --git a/registry/wrangles/_root/huggingface.md b/registry/wrangles/_root/huggingface.md new file mode 100644 index 0000000..f684cc6 --- /dev/null +++ b/registry/wrangles/_root/huggingface.md @@ -0,0 +1,129 @@ +--- +schema_version: '0.1' +type: wrangle +id: ae12cf20-4934-428f-84a9-a6898cb7ffe0 +wrangle_name: huggingface +namespace: null +title: Huggingface +description: Use a model from huggingface. +wrangle_key: huggingface +aliases: [] +slug: huggingface +status: active +visibility: public +tags: + - ai + - huggingface +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.huggingface + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: api_token + description: Huggingface API Token. + required: true + role: option + schema: + type: string + - name: model + description: Name of the model to use. e.g. facebook/bart-large-cnn. + required: true + role: option + schema: + type: string + - name: output + description: Name of the output column. If not provided, will overwrite the input column. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: parameters + description: Optionally, provide additional parameters to define the model behaviour. + required: false + role: option + runtime_default: null + schema: + type: + - object + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY huggingface implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/ai/_sources/huggingface.md + title: Existing huggingface Markdown +--- + +# Huggingface + +Use a model from huggingface + +## Migrated examples +#### Summarize Product Descriptions + +This template uses a Hugging Face summarization model. The exact response shape and text depend on the selected model. + +##### Recipe + +```yaml +wrangles: + - huggingface: + input: + - Product Description + output: + - Summary + api_token: Your Hugging Face API token + model: facebook/bart-large-cnn +``` + +
+ +
+ +##### Input Sample + +| Product Description | +| --- | +| A cordless drill with two batteries, a charger, and a compact carrying case. | + +
+ +
+ +##### Output Sample + +| Product Description | Summary | +| --- | --- | +| A cordless drill with two batteries, a charger, and a compact carrying case. | Cordless drill kit with batteries, charger, and case. | + +
+ +
+ +_Template based on the documented parameters; no published source example is currently available._ diff --git a/registry/wrangles/_root/log.md b/registry/wrangles/_root/log.md new file mode 100644 index 0000000..de9c3af --- /dev/null +++ b/registry/wrangles/_root/log.md @@ -0,0 +1,207 @@ +--- +schema_version: '0.1' +type: wrangle +id: 6177808e-aa2d-4d0b-8385-858b16948a5d +wrangle_name: log +namespace: null +title: Log +description: Log the current status of the dataframe. +wrangle_key: log +aliases: [] +slug: log +status: active +visibility: public +tags: + - utility + - log +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.log + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: columns + description: (Optional, default all columns) List of specific columns to log. + required: false + role: option + runtime_default: null + schema: + type: + - array + - 'null' + - name: write + description: (Optional) Allows for an intermediate output to a file/dataframe/database etc. + required: false + role: option + runtime_default: null + schema: + type: + - array + - 'null' + minItems: 1 + items: + $ref: '#/$defs/write/items' + - name: warning + description: Log a warning to the console. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + - name: info + description: Log info to the console. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + - name: log_data + description: >- + Whether to log a sample of the contents of the dataframe. Default True if not logging to a + write, error, warning or info. Default False otherwise. + required: false + role: option + runtime_default: null + schema: + type: + - boolean + - 'null' + - name: error + description: Log an error to the console. + required: false + role: option + schema: + type: string +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY log implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/utility/_sources/log.md + title: Existing log Markdown +--- + +# Log + +Print the current status of the dataframe. Only a sample of rows is logged. + +## Migrated examples +#### Logging All Columns to Terminal + +##### Recipe + +```yaml +wrangles: + - log: {} +``` + +
+ +
+ +##### Input Sample + +_Logging side-effect; no tabular input sample._ + +
+ +
+ +##### Output Sample + +_Logs a sample of rows or status information to the configured destination._ + +
+ +
+ +#### Logging Specific Columns to Terminal + +##### Recipe + +```yaml +wrangles: + - log: + columns: + - column1 + - column2 +``` + +
+ +
+ +##### Input Sample + +_Logging side-effect; no tabular input sample._ + +
+ +
+ +##### Output Sample + +_Logs a sample of rows or status information to the configured destination._ + +
+ +
+ +#### Logging to a File + +##### Recipe + +```yaml +wrangles: + - log: + write: + - file: + name: output/filepath + columns: + - column 1 + - column 2 +``` + +
+ +
+ +##### Input Sample + +_Logging side-effect; no tabular input sample._ + +
+ +
+ +##### Output Sample + +_Logs a sample of rows or status information to the configured destination._ + +
+ +
+ +#### Native Variables + +| Variable | Function | +| --- | --- | +| `${column_count}` | Number of columns. | +| `${columns}` | List of all columns. | +| `${df}` | Current dataframe. | +| `${row_count}` | Number of visible rows processed in each batch. | diff --git a/registry/wrangles/_root/lookup.md b/registry/wrangles/_root/lookup.md new file mode 100644 index 0000000..d219a3d --- /dev/null +++ b/registry/wrangles/_root/lookup.md @@ -0,0 +1,140 @@ +--- +schema_version: '0.1' +type: wrangle +id: b3339193-d1cc-4c89-8ed6-901efa6d81be +wrangle_name: lookup +namespace: null +title: Lookup +description: Lookup values from a saved lookup wrangle. +wrangle_key: lookup +aliases: [] +slug: lookup +status: active +visibility: public +tags: + - lookup +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.lookup + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the column(s) to lookup. + required: true + role: column-selector + schema: + type: string + - name: output + description: >- + Name of the output column(s). When n is provided and the output list length equals n, each + output column receives the corresponding match. A single output containing a wildcard (*) is + expanded into n columns, e.g. "Top *" with n: 3 becomes "Top 1", "Top 2", "Top 3". + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: model_id + description: The model_id to use lookup against. + required: false + role: model-reference + runtime_default: null + schema: + type: + - string + - 'null' + - name: lookup_mode + description: >- + How to perform lookups. 'by_row' (default): lookup each row individually. 'by_dataframe': + lookup unique values once, copy results to all rows. 'by_matrix': lookup once per matrix + permutation. + required: false + role: option + runtime_default: by_row + schema: + type: string + enum: + - by_row + - by_matrix + - by_dataframe + - name: n + description: >- + Number of matches to return per input value. When the output list length equals n, each output + column receives the corresponding match. Otherwise all n matches are stored as a list in each + output column. + required: false + role: option + runtime_default: null + schema: + type: + - integer + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY lookup implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/lookup/_sources/lookup.md + title: Existing lookup Markdown +--- + +# Lookup + +Look up data from a saved Lookup Wrangle. Data is output as a dictionary if an output is not specified or the output does not match any columns in the lookup. If specific lookup columns are named in the output, they will be output as individual columns. + +## Migrated examples +#### State Example + +##### Recipe + +```yaml +wrangles: + - lookup: + input: State + output: + - Abbreviation + model_id: 55555555-5555-5555 +``` + +
+ +
+ +##### Input Sample + +| State | +| --- | +| Texas | +| New York | +| Virginia | + +
+ +
+ +##### Output Sample + +| Abbreviation | +| --- | +| TX | +| NY | +| VA | + +
+ +
diff --git a/registry/wrangles/_root/math.md b/registry/wrangles/_root/math.md new file mode 100644 index 0000000..14bb1de --- /dev/null +++ b/registry/wrangles/_root/math.md @@ -0,0 +1,103 @@ +--- +schema_version: '0.1' +type: wrangle +id: 494b11ad-00c1-4748-8b93-6bec982f4fec +wrangle_name: math +namespace: null +title: Math +description: Apply a mathematical calculation. +wrangle_key: math +aliases: [] +slug: math +status: active +visibility: public +tags: + - compute + - math +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.math + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: >- + The mathematical expression using column names. e.g. column1 * column2 + column3. Note: spaces + within column names are replaced by underscores (_). + required: true + role: column-selector + schema: + type: string + - name: output + description: The column to output the results to. + required: true + role: column-output + schema: + type: string +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY math implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compute/_sources/math.md + title: Existing math Markdown +--- + +# Math + +Apply mathematical calculations to columns. Also called as `maths`. + +:::info +Spaces within column headers are replaced with underscores automatically. Account for this when writing expressions in `input`. +::: + +## Migrated examples +#### Square Root Example + +##### Recipe + +```yaml +wrangles: + - math: + input: sqrt(Values) + output: Square Root +``` + +
+ +
+ +##### Input Sample + +| Values | +| --- | +| 4 | +| 9 | +| 16 | + +
+ +
+ +##### Output Sample + +| Values | Square Root | +| --- | --- | +| 4 | 2 | +| 9 | 3 | +| 16 | 4 | + +
+ +
diff --git a/registry/wrangles/_root/maths.md b/registry/wrangles/_root/maths.md new file mode 100644 index 0000000..320743b --- /dev/null +++ b/registry/wrangles/_root/maths.md @@ -0,0 +1,56 @@ +--- +schema_version: '0.1' +type: wrangle +id: null +wrangle_name: maths +namespace: null +title: Maths +description: Deprecated alias for `math`; evaluate an expression and write its result to an output column. +wrangle_key: maths +aliases: [] +slug: maths +status: deprecated +visibility: public +tags: + - maths +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.maths + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name, index, or list of input columns. + required: true + role: column-selector + schema: + type: string + - name: output + description: Name or list of output columns. + required: true + role: column-output + schema: + type: string +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY maths implementation +--- + +# Maths + +## Behavior + +Deprecated alias for `math`; evaluate an expression and write its result to an output column. + +This first-pass guidance is derived from the callable signature. diff --git a/registry/wrangles/_root/matrix.md b/registry/wrangles/_root/matrix.md new file mode 100644 index 0000000..efe654b --- /dev/null +++ b/registry/wrangles/_root/matrix.md @@ -0,0 +1,193 @@ +--- +schema_version: '0.1' +type: wrangle +id: null +wrangle_name: matrix +namespace: null +title: Matrix +description: >- + Apply a matrix of wrangles to the dataframe. This will run the wrangles for each combination of + the variables. +wrangle_key: matrix +aliases: [] +slug: matrix +status: active +visibility: public +tags: + - utility + - matrix +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.matrix + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: variables + description: >- + A dictionary of variables to pass to the wrangle. The key is the variable name and the value + is a list of values. + required: true + role: variables + schema: + type: object + - name: wrangles + description: >- + The wrangles to apply to the dataframe. Each wrangle will be run for each combination of the + variables. + required: true + role: nested-wrangles + schema: + type: array + minItems: 1 + items: + $ref: '#/$defs/wrangles/items' + - name: strategy + description: >- + Determines how to combine variables when there are multiple. loop (default) iterates over each + set of variables, repeating shorter lists until the longest is completed. permutations uses + the combination of all variables against all other variables. + required: false + role: option + runtime_default: loop + schema: + type: string + enum: + - permutations + - loop +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY matrix implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/utility/_sources/matrix.md + title: Existing matrix Markdown +--- + +# Matrix + +Apply a matrix of wrangles to the dataframe. Each wrangle runs for the configured combinations of variables, including recipe variables and variables declared by the `variables` parameter. + +See the [Matrix connector](/python/connectors/matrix) for the connector equivalent. + +## Migrated examples +#### Use Hardcoded Variables + +Run a custom function once for each configured variable value. + +##### Recipe + +```yaml +wrangles: + - matrix: + variables: + var: [A, B, C] + wrangles: + - custom.test_fn: + input: Part Code + output: Part Code ${var} + value: ${var} +``` + +```python +def test_fn(part_code, value): + return part_code + value +``` + +
+ +
+ +##### Input Sample + +| Part Code | +| --- | +| 6202 | +| br549 | +| 554-114 | +| 554-112 | + +
+ +
+ +##### Output Sample + +| Part Code | Part Code A | Part Code B | Part Code C | +| --- | --- | --- | --- | +| 6202 | 6202A | 6202B | 6202C | +| br549 | br549A | br549B | br549C | +| 554-114 | 554-114A | 554-114B | 554-114C | +| 554-112 | 554-112A | 554-112B | 554-112C | + +
+ +
+ +#### Use Unique Variables Per Row + +This example runs `extract.custom` once for each unique model ID. + +##### Recipe + +```yaml +wrangles: + - matrix: + variables: + model_id: set(Model ID) + wrangles: + - extract.custom: + input: Description + output: Extracted Values + model_id: ${model_id} + where: "[Model ID] = ?" + where_params: + - ${model_id} +``` + +
+ +
+ +##### Input Sample + +| Description | Model ID | +| --- | --- | +| The SKF 6202 bearing is the best bearing in the world | xxxxxxxx-xxxx-xxxx | +| The Timken 6102 bearing is indestructible | yyyyyyyy-yyyy-yyyy | +| The Milwaukee impact has 1200ft-lbs of torque | zzzzzzzz-zzzz-zzzz | + +
+ +
+ +##### Output Sample + +| Description | Model ID | Extracted Values | +| --- | --- | --- | +| The SKF 6202 bearing is the best bearing in the world | xxxxxxxx-xxxx-xxxx | 6202 | +| The Timken 6102 bearing is indestructible | yyyyyyyy-yyyy-yyyy | indestructible | +| The Milwaukee impact has 1200ft-lbs of torque | zzzzzzzz-zzzz-zzzz | 1200ft-lbs | + +
+ +
+ +#### Native Variables + +| Variable | Function | +| --- | --- | +| `${column_count}` | Number of columns. | +| `${columns}` | List of all columns. | +| `${df}` | Current dataframe. | +| `${row_count}` | Number of visible rows processed in each batch. | diff --git a/registry/wrangles/_root/python.md b/registry/wrangles/_root/python.md new file mode 100644 index 0000000..8e4ce10 --- /dev/null +++ b/registry/wrangles/_root/python.md @@ -0,0 +1,172 @@ +--- +schema_version: '0.1' +type: wrangle +id: c0398a11-7731-4e47-8df0-b07eea0b1d6c +wrangle_name: python +namespace: null +title: Python +description: >- + Apply a simple single-line python command. For more complex python use a custom function. Note, + this evaluates the python command - be especially cautious including variables from untrusted + sources within the command string. The python command will be evaluated once for each row and the + result returned. Reference column values by using their name. Non-alphanumeric characters within + column names are replaced by underscores (_) Additionally, all columns are available as a dict + named kwargs. Additional parameters set for the wrangle will also be available to the command. +wrangle_key: python +aliases: [] +slug: python +status: active +visibility: public +tags: + - compute + - python +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.python + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: command + description: >- + Python command. This must return a value. Note: any non-alphanumeric characters in variable + names are replaced by underscores (_). + required: true + role: option + schema: + type: string + - name: output + description: >- + Name or list of output column(s). To output multiple columns, return a list of the + corresponding length. + required: true + role: column-output + schema: + type: + - string + - array + - name: input + description: >- + Name or list of input column(s) to filter the data available to the command. Useful in + conjunction with kwargs to target a variable range of columns. If not specified, all columns + will be available. + required: false + role: column-selector + runtime_default: null + schema: + type: + - string + - integer + - array + - 'null' + - name: except + description: >- + Value to return for the row if an exception occurs during the evaluation. If not provided, an + exception will be raised as normal. If multiple output columns are specified, this must match + the length. + required: false + role: option + schema: + type: + - string + - array + - number + - integer + - boolean + - object +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY python implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compute/_sources/python.md + title: Existing python Markdown +--- + +# Python + +The Python wrangle executes simple Python commands inline within a recipe. Row values are referenced by column name and commands are evaluated once per row. Spaces within column names are replaced by underscores (`_`). All columns are also available as a dictionary named `kwargs`. For more complex Python, use custom functions. + +:::caution +This wrangle evaluates the Python command. Be cautious when including variables from untrusted sources in the command string. +::: + +## Migrated examples +#### Python Wrangle + +##### Recipe + +```yaml +wrangles: + - python: + output: result + command: My_Column.upper() +``` + +
+ +
+ +##### Input Sample + +| My Column | +| --- | +| example text | + +
+ +
+ +##### Output Sample + +| My Column | result | +| --- | --- | +| example text | EXAMPLE TEXT | + +
+ +
+ +#### Including Your Own Parameters + +The Python wrangle supports parameters so values of unknown origin can be injected safely. + +##### Recipe + +```yaml +wrangles: + - python: + output: sliced + command: input_column[:i] + i: ${var} +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +_No sample available._ + +
+ +
diff --git a/registry/wrangles/_root/recipe.md b/registry/wrangles/_root/recipe.md new file mode 100644 index 0000000..296f36f --- /dev/null +++ b/registry/wrangles/_root/recipe.md @@ -0,0 +1,83 @@ +--- +schema_version: '0.1' +type: wrangle +id: null +wrangle_name: recipe +namespace: null +title: Recipe +description: Run another recipe as a wrangle against the current dataframe. +wrangle_key: recipe +aliases: [] +slug: recipe +status: active +visibility: public +tags: + - recipe +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.recipe + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name, index, or list of input columns. + required: false + role: column-selector + runtime_default: null + schema: + type: + - string + - integer + - array + - 'null' + - name: output + description: Name or list of output columns. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: name + description: File name of the recipe. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + - name: variables + description: A dictionary of variables to pass to the recipe. + required: false + role: variables + runtime_default: null + schema: + type: + - object + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY recipe implementation +--- + +# Recipe + +## Behavior + +Run another recipe as a wrangle against the current dataframe. + +This first-pass guidance is derived from the callable signature and its embedded Python schema docstring. diff --git a/registry/wrangles/_root/reindex.md b/registry/wrangles/_root/reindex.md new file mode 100644 index 0000000..4191c70 --- /dev/null +++ b/registry/wrangles/_root/reindex.md @@ -0,0 +1,134 @@ +--- +schema_version: '0.1' +type: wrangle +id: def87df8-72da-4e34-83c1-1fde25126257 +wrangle_name: reindex +namespace: null +title: Reindex +description: Changes the row labels and column labels of a DataFrame. +wrangle_key: reindex +aliases: [] +slug: reindex +status: active +visibility: public +tags: + - transform + - reindex +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.pandas.reindex + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: false + where_params: false +parameters: + - name: labels + description: New labels / index to conform the axis specified by ‘axis’ to. + required: false + role: option + runtime_default: null + schema: + type: + - array + - 'null' + - name: index + description: New labels for the index. Preferably an Index object to avoid duplicating data. + required: false + role: option + runtime_default: null + schema: + type: + - array + - 'null' + - name: columns + description: New labels for the columns. Preferably an Index object to avoid duplicating data. + required: false + role: option + runtime_default: null + schema: + type: + - array + - 'null' + - name: axis + description: Axis to target. Can be either the axis name (‘index’, ‘columns’) or number (0, 1). + required: false + role: option + runtime_default: null + schema: + type: + - string + - integer + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/pandas.py + title: WranglesPY reindex implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/transform/_sources/reindex.md + title: Existing reindex Markdown +--- + +# Reindex + +Conform a DataFrame to a new index with optional filling logic. + +## Migrated examples +:::note +Cannot specify both `axis` and any of `index` or `columns`. Reindex is not compatible with `where` filtering. +::: + +#### Reindexing a Dataframe + +##### Recipe + +```yaml +wrangles: + - reindex: + index: + - 5 + - 4 + - 3 + - 2 + - 1 +``` + +
+ +
+ +##### Input Sample + +| | Material | Product Data | +| --- | --- | --- | +| 1 | Ceramic | SKF ball brg | +| 2 | Rubber | brg seal | +| 3 | Brass | Ball valve | +| 4 | Ceramic | Ceramic cartridge | +| 5 | Stainless Steel | Needle Bearing | + +
+ +
+ +##### Output Sample + +| | Material | Product Data | +| --- | --- | --- | +| 5 | Stainless Steel | Needle Bearing | +| 4 | Ceramic | Ceramic cartridge | +| 3 | Brass | Ball valve | +| 2 | Rubber | brg seal | +| 1 | Ceramic | SKF ball brg | + +
+ +
diff --git a/registry/wrangles/_root/remove-words.md b/registry/wrangles/_root/remove-words.md new file mode 100644 index 0000000..d84baf3 --- /dev/null +++ b/registry/wrangles/_root/remove-words.md @@ -0,0 +1,127 @@ +--- +schema_version: '0.1' +type: wrangle +id: 543b96c3-f354-48be-8046-bf0cb9fbaf56 +wrangle_name: remove_words +namespace: null +title: Remove Words +description: Remove all the elements that occur in one list from another. +wrangle_key: remove_words +aliases: [] +slug: remove-words +status: active +visibility: public +tags: + - format + - remove-words +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.remove_words + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of column to remove words from. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: to_remove + description: Column or list of columns with a list of words to be removed. + required: true + role: option + schema: + type: string + - name: output + description: Name of the output columns. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: tokenize_to_remove + description: Tokenize all to_remove inputs. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: ignore_case + description: Ignore input and to_remove case. + required: false + role: option + runtime_default: true + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY remove_words implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/remove-words.md + title: Existing remove_words Markdown +--- + +# Remove Words + +Remove all the elements that occur in one list from another. + +## Migrated examples +#### Removing Words From a Column + +##### Recipe + +```yaml +wrangles: + - remove_words: + input: Description + to_remove: # To Remove columns must be list + - Materials + - Colours + output: Product + tokenize_to_remove: True + ignore_case: False +``` + +
+ +
+ +##### Input Sample + +| Colours | Materials | Description | +| --- | --- | --- | +| ['Blue'] | ['Steel'] | Steel Blue Bottle | +| ['Blue'] | ['Steel'] | ['Steel', 'Blue', 'Bottle'] | + +
+ +
+ +##### Output Sample + +| Product | +| --- | +| Bottle | +| Bottle | + +
+ +
diff --git a/registry/wrangles/_root/rename.md b/registry/wrangles/_root/rename.md new file mode 100644 index 0000000..882075d --- /dev/null +++ b/registry/wrangles/_root/rename.md @@ -0,0 +1,203 @@ +--- +schema_version: '0.1' +type: wrangle +id: ab06898f-faf7-42e7-8275-5e3034a4d727 +wrangle_name: rename +namespace: null +title: Rename +description: Rename a column or list of columns. +wrangle_key: rename +aliases: [] +slug: rename +status: active +visibility: public +tags: + - transform + - rename +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.rename + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: false + where_params: false +parameters: + - name: input + description: Name or list of input columns. + required: false + role: column-selector + runtime_default: null + schema: + type: + - string + - integer + - array + - 'null' + - name: output + description: Name or list of output columns. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: wrangles + description: >- + Use wrangles to transform the column names. The input is named 'columns' and the final result + must also include the column named 'columns'. This can only be used instead of the standard + rename. + required: false + role: nested-wrangles + runtime_default: null + schema: + type: + - array + - 'null' + minItems: 1 + items: + $ref: '#/$defs/wrangles/items' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY rename implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/transform/_sources/rename.md + title: Existing rename Markdown +--- + +# Rename + +Rename a column or list of columns. + +## Migrated examples +:::note +Rename is not compatible with `where` filtering. +::: + +#### Renaming Columns With Input and Output + +##### Recipe + +```yaml +wrangles: + - rename: + input: + - Manufacturer Name + - Manufacturer Part Number + output: + - Manufacturer + - MPN +``` + +
+ +
+ +##### Input Sample + +| Manufacturer Name | Manufacturer Part Number | +| --- | --- | +| SKF | 302-2 | +| Timken | PF48 | + +
+ +
+ +##### Output Sample + +| Manufacturer | MPN | +| --- | --- | +| SKF | 302-2 | +| Timken | PF48 | + +
+ +
+ +#### Renaming Columns Without Using Input and Output + +##### Recipe + +```yaml +wrangles: + - rename: + Manufacturer Name: Manufacturer + Manufacturer Part Number: MPN +``` + +
+ +
+ +##### Input Sample + +| Manufacturer Name | Manufacturer Part Number | +| --- | --- | +| SKF | 302-2 | +| Timken | PF48 | + +
+ +
+ +##### Output Sample + +| Manufacturer | MPN | +| --- | --- | +| SKF | 302-2 | +| Timken | PF48 | + +
+ +
+ +#### Using Wrangles in Rename + +##### Recipe + +```yaml +wrangles: + - rename: + wrangles: + - convert.case: + input: columns + case: upper +``` + +
+ +
+ +##### Input Sample + +| Manufacturer Name | Manufacturer Part Number | +| --- | --- | +| SKF | 302-2 | +| Timken | PF48 | + +
+ +
+ +##### Output Sample + +| MANUFACTURER NAME | MANUFACTURER PART NUMBER | +| --- | --- | +| SKF | 302-2 | +| Timken | PF48 | + +
+ +
diff --git a/registry/wrangles/_root/replace.md b/registry/wrangles/_root/replace.md new file mode 100644 index 0000000..452a7fa --- /dev/null +++ b/registry/wrangles/_root/replace.md @@ -0,0 +1,121 @@ +--- +schema_version: '0.1' +type: wrangle +id: f0ab715e-9e0e-4614-83e4-5cd8ea08a09f +wrangle_name: replace +namespace: null +title: Replace +description: >- + Quick find and replace for simple values. Can use regex if 'input' in params and + isinstance(params['input'], list):in the find field. +wrangle_key: replace +aliases: [] +slug: replace +status: active +visibility: public +tags: + - format + - replace +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.replace + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name or list of input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: find + description: Pattern to find using regex. + required: true + role: option + schema: + type: string + - name: replace + description: Value to replace the pattern found. + required: true + role: option + schema: + type: string + - name: output + description: Name or list of output column. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY replace implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/replace.md + title: Existing replace Markdown +--- + +# Replace + +Quick find and replace for simple values. Can use regex in the `find` field. + +:::note +Values that are not a number or a string pass through unaltered. +::: + +## Migrated examples +#### Replacing an Abbreviation + +##### Recipe + +```yaml +wrangles: + - replace: + input: Product Data + find: brg + replace: bearing +``` + +
+ +
+ +##### Input Sample + +| Product Data | +| --- | +| SKF ball brg | +| brg seal | + +
+ +
+ +##### Output Sample + +| Product Data | +| --- | +| SKF ball bearing | +| bearing seal | + +
+ +
diff --git a/registry/wrangles/_root/round.md b/registry/wrangles/_root/round.md new file mode 100644 index 0000000..9f29e10 --- /dev/null +++ b/registry/wrangles/_root/round.md @@ -0,0 +1,110 @@ +--- +schema_version: '0.1' +type: wrangle +id: 12f3111b-8511-4e42-8d3f-b5302dc3b4e4 +wrangle_name: round +namespace: null +title: Round +description: Round column(s) to the specified decimals. +wrangle_key: round +aliases: [] +slug: round +status: active +visibility: public +tags: + - format + - round +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.pandas.round + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column(s). + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: decimals + description: Number of decimal places to round column. + required: false + role: option + runtime_default: 0 + schema: + type: integer + - name: output + description: Name of the output column(s). + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/pandas.py + title: WranglesPY round implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/round.md + title: Existing round Markdown +--- + +# Round + +Round numbers in a column to the nearest decimal point of your choosing. + +## Migrated examples +#### Rounding a Column + +##### Recipe + +```yaml +wrangles: + - round: + input: Cost Per Unit + output: Cost Rounded + decimals: 2 +``` + +
+ +
+ +##### Input Sample + +| Cost Per Unit | +| --- | +| 3.14159 | +| 2.71828 | + +
+ +
+ +##### Output Sample + +| Cost Per Unit | Cost Rounded | +| --- | --- | +| 3.14159 | 3.14 | +| 2.71828 | 2.72 | + +
+ +
diff --git a/registry/wrangles/_root/similarity.md b/registry/wrangles/_root/similarity.md new file mode 100644 index 0000000..03f5f5e --- /dev/null +++ b/registry/wrangles/_root/similarity.md @@ -0,0 +1,127 @@ +--- +schema_version: '0.1' +type: wrangle +id: 7c733344-4cce-4938-8013-53742fb46a90 +wrangle_name: similarity +namespace: null +title: Similarity +description: Calculate the cosine similarity of two vectors. +wrangle_key: similarity +aliases: [] +slug: similarity +status: active +visibility: public +tags: + - compare + - similarity +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.similarity + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Two columns of vectors to compare the similarity of. + required: true + role: column-selector + schema: + type: array + minItems: 2 + maxItems: 2 + - name: output + description: Name of the output column. + required: true + role: column-output + schema: + type: string + - name: method + description: >- + The type of similarity to calculate (cosine or euclidean). Adjusted cosine adjusts the default + cosine calculation to cover a range of 0-1 for typical comparisons. + required: false + role: option + runtime_default: cosine + schema: + type: string + enum: + - cosine + - adjusted cosine + - euclidean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY similarity implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compare/_sources/similarity.md + title: Existing similarity Markdown +--- + +# Similarity + +Calculate the similarity of two vectors. + +:::info +Similarity only works on vectors. To produce vectors from a column of strings, use `create.embeddings` first. +::: + +## Migrated examples +#### Similarity Between Embeddings + +##### Recipe + +```yaml +wrangles: + - create.embeddings: + input: col1 + api_key: ${my_key} + output: col1 embeddings + + - create.embeddings: + input: col2 + api_key: ${my_key} + output: col2 embeddings + + - similarity: + input: + - col1 embeddings + - col2 embeddings + output: similarity + method: adjusted cosine +``` + +
+ +
+ +##### Input Sample + +| col1 | col2 | +| --- | --- | +| SKF | Timken | +| Ball Bearing | Roller Bearing | + +
+ +
+ +##### Output Sample + +| col1 | col2 | col1 embeddings | col2 embeddings | similarity | +| --- | --- | --- | --- | --- | +| SKF | Timken | [1, 2, 3, 4] | [4, 3, 2, 1] | 0.158931 | +| Ball Bearing | Roller Bearing | [5, 6, 7, 8] | [5, 6, 7, 9] | 0.942437 | + +
+ +
diff --git a/registry/wrangles/_root/sort.md b/registry/wrangles/_root/sort.md new file mode 100644 index 0000000..211ec33 --- /dev/null +++ b/registry/wrangles/_root/sort.md @@ -0,0 +1,116 @@ +--- +schema_version: '0.1' +type: wrangle +id: 1dcf06ad-898a-4d83-862c-4774be37a687 +wrangle_name: sort +namespace: null +title: Sort +description: Sort the data. +wrangle_key: sort +aliases: [] +slug: sort +status: active +visibility: public +tags: + - select + - sort +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.pandas.sort + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: ignore_index + description: Ignore Index value accepted by the runtime. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: by + description: Name or list of the column(s) to sort by. + required: true + role: column-selector + schema: + type: + - string + - array + - name: ascending + description: >- + Sort ascending vs. descending. Specify a list to sort multiple columns in different orders. If + this is a list of bools then it must match the length of the by. + required: false + role: option + schema: + type: + - boolean + - array + items: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/pandas.py + title: WranglesPY sort implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/sort.md + title: Existing sort Markdown +--- + +# Sort + +Sort the data + +## Migrated examples +#### Replacing Abbreviations + +##### Recipe + +```yaml +wrangles: + - sort: + by: Price + ascending: true +``` + +
+ +
+ +##### Input Sample + +| Item | Price | +| --- | --- | +| Hammer | 11.99 | +| Chisel | 4.99 | +| Drill | 29.99 | +| Wrench | 6.99 | +| Saw | 13.99 | + +
+ +
+ +##### Output Sample + +| Item | Price | +| --- | --- | +| Chisel | 4.99 | +| Wrench | 6.99 | +| Hammer | 11.99 | +| Saw | 13.99 | +| Drill | 29.99 | + +
+ +
diff --git a/registry/wrangles/_root/sql.md b/registry/wrangles/_root/sql.md new file mode 100644 index 0000000..4c3178d --- /dev/null +++ b/registry/wrangles/_root/sql.md @@ -0,0 +1,124 @@ +--- +schema_version: '0.1' +type: wrangle +id: 467a06b1-a697-4d31-8061-7d83a719fd79 +wrangle_name: sql +namespace: null +title: SQL +description: >- + Apply a SQL command to the current dataframe. Only SELECT statements are supported - the result + will be the output. +wrangle_key: sql +aliases: [] +slug: sql +status: active +visibility: public +tags: + - compute + - sql +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.sql + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: command + description: SQL Command. The table is called df. For specific SQL syntax, this uses the SQLite dialect. + required: true + role: option + schema: + type: string + - name: params + description: >- + Variables to use in conjunctions with query. This allows the query to be parameterized. This + uses sqlite syntax (? or :name). + required: false + role: option + runtime_default: null + schema: + type: + - array + - object + - 'null' + - name: preserve_index + description: Preserve Index value accepted by the runtime. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: preserve_data_types + description: Preserve Data Types value accepted by the runtime. + required: false + role: option + runtime_default: true + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY sql implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compute/_sources/sql.md + title: Existing sql Markdown +--- + +# SQL + +Apply a SQL command to the current dataframe. Only `SELECT` statements are supported; the result becomes the output. The current table is called `df`. + +:::info +SQL does not currently work with objects. If your table contains objects, use `convert.to_json` before using SQL. SQL is not compatible with `where` filtering. +::: + +## Migrated examples +#### Selecting a Subset of Data + +##### Recipe + +```yaml +wrangles: + - sql: + command: | + SELECT header1, header2 + FROM df + WHERE header1 >= 2 +``` + +
+ +
+ +##### Input Sample + +| header1 | header2 | header3 | +| --- | --- | --- | +| 1 | a | x | +| 2 | b | y | +| 3 | c | z | + +
+ +
+ +##### Output Sample + +| header1 | header2 | +| --- | --- | +| 2 | b | +| 3 | c | + +
+ +
diff --git a/registry/wrangles/_root/standardize.md b/registry/wrangles/_root/standardize.md new file mode 100644 index 0000000..e414d26 --- /dev/null +++ b/registry/wrangles/_root/standardize.md @@ -0,0 +1,120 @@ +--- +schema_version: '0.1' +type: wrangle +id: 53cd3fdd-24e2-4411-8655-6014b92a3f3a +wrangle_name: standardize +namespace: null +title: Standardize +description: >- + Standardize data using a DIY or bespoke standardization wrangle. Requires WrangleWorks Account and + Subscription. +wrangle_key: standardize +aliases: [] +slug: standardize +status: active +visibility: public +tags: + - format + - standardize +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.standardize + contract_status: verified +access: + ai_powered: false + requires_account: true + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name or list of input columns. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: model_id + description: The ID of the wrangle to use (do not include 'find' and 'replace'). + required: true + role: model-reference + schema: + type: + - string + - array + - name: output + description: Name or list of output columns. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: case_sensitive + description: Allows the wrangle to be case sensitive if set to True, default is False. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY standardize implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/standardize.md + title: Existing standardize Markdown +--- + +# Standardize + +Run a standardize wrangle, such as one that expands abbreviations. A standardization wrangle must be trained first. + +## Migrated examples +#### Replacing Abbreviations + +##### Recipe + +```yaml +wrangles: + - standardize: + input: Abbrev + output: Abbreviations + model_id: code_here +``` + +
+ +
+ +##### Input Sample + +| Abbrev | +| --- | +| ASAP | +| ETA | + +
+ +
+ +##### Output Sample + +| Abbreviations | +| --- | +| As Soon As Possible | +| Estimated Time of Arrival | + +
+ +
diff --git a/registry/wrangles/_root/translate.md b/registry/wrangles/_root/translate.md new file mode 100644 index 0000000..ddba2cc --- /dev/null +++ b/registry/wrangles/_root/translate.md @@ -0,0 +1,177 @@ +--- +schema_version: '0.1' +type: wrangle +id: 73c3ceb6-ffd8-4d74-8389-c83b99d33bb0 +wrangle_name: translate +namespace: null +title: Translate +description: >- + Translate the input to a different language. Requires WrangleWorks Account and DeepL API Key (A + free account for up to 500,000 characters per month is available). +wrangle_key: translate +aliases: [] +slug: translate +status: active +visibility: public +tags: + - format + - translate +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.translate + contract_status: verified +access: + ai_powered: false + requires_account: true + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the column to translate. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output column. + required: true + role: column-output + schema: + type: + - string + - array + - name: target_language + description: Code of the language to translate to. + required: true + role: option + schema: + type: string + enum: + - Bulgarian + - Chinese + - Czech + - Danish + - Dutch + - English (American) + - English (British) + - Estonian + - Finnish + - French + - German + - Greek + - Hungarian + - Italian + - Japanese + - Latvian + - Lithuanian + - Polish + - Portuguese + - Portuguese (Brazilian) + - Romanian + - Russian + - Slovak + - Slovenian + - Spanish + - Swedish + - name: source_language + description: Code of the language to translate from. If omitted, automatically detects the input language. + required: false + role: option + runtime_default: AUTO + schema: + type: string + enum: + - Auto + - Bulgarian + - Chinese + - Czech + - Danish + - Dutch + - English + - Estonian + - Finnish + - French + - German + - Greek + - Hungarian + - Italian + - Japanese + - Latvian + - Lithuanian + - Polish + - Portuguese + - Romanian + - Russian + - Slovak + - Slovenian + - Spanish + - Swedish + - name: case + description: Allow changing the case of the input prior to translation. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY translate implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/translate.md + title: Existing translate Markdown +--- + +# Translate + +Translate the input column to another language. Powered by DeepL. + +## Migrated examples +#### Translating Spanish to English + +##### Recipe + +```yaml +wrangles: + - translate: + input: Español + output: English + source_language: Spanish + target_language: English (British) +``` + +
+ +
+ +##### Input Sample + +| Español | +| --- | +| ¡Hola Mundo! | + +
+ +
+ +##### Output Sample + +| English | +| --- | +| Hello World! | + +
+ +
diff --git a/registry/wrangles/_root/transpose.md b/registry/wrangles/_root/transpose.md new file mode 100644 index 0000000..b9fa957 --- /dev/null +++ b/registry/wrangles/_root/transpose.md @@ -0,0 +1,97 @@ +--- +schema_version: '0.1' +type: wrangle +id: 8716347f-f286-49b2-8a0b-cb73292e7475 +wrangle_name: transpose +namespace: null +title: Transpose +description: Transpose the DataFrame (swap columns to rows). +wrangle_key: transpose +aliases: [] +slug: transpose +status: active +visibility: public +tags: + - transform + - transpose +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.pandas.transpose + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: header_column + description: >- + Name or position of the column that will be used as the column headings for the transposed + DataFrame. Default 0 (first column). Use header_column = null to not use any column as header. + required: false + role: column-selector + runtime_default: 0 + schema: + type: + - string + - integer + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/pandas.py + title: WranglesPY transpose implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/transform/_sources/transpose.md + title: Existing transpose Markdown +--- + +# Transpose + +Transpose a dataframe. + +## Migrated examples +:::note +Transpose is not compatible with `where` filtering. +::: + +#### Transposing a Dataframe + +##### Recipe + +```yaml +wrangles: + - transpose: + header_column: Material +``` + +
+ +
+ +##### Input Sample + +| Material | Product Data | +| --- | --- | +| Ceramic | SKF ball brg | +| Rubber | brg seal | + +
+ +
+ +##### Output Sample + +| Material | Ceramic | Rubber | +| --- | --- | --- | +| Product Data | SKF ball brg | brg seal | + +
+ +
diff --git a/registry/wrangles/_root/try.md b/registry/wrangles/_root/try.md new file mode 100644 index 0000000..34daeb8 --- /dev/null +++ b/registry/wrangles/_root/try.md @@ -0,0 +1,110 @@ +--- +schema_version: '0.1' +type: wrangle +id: null +wrangle_name: try +namespace: null +title: Try +description: Try a list of wrangles and catch any errors that occur. +wrangle_key: try +aliases: [] +slug: try +status: active +visibility: public +tags: + - utility + - try +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.Try + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: wrangles + description: List of wrangles to apply. + required: true + role: nested-wrangles + schema: + type: array + minItems: 1 + items: + $ref: '#/$defs/wrangles/items' + - name: retries + description: Number of times to retry the wrangles if an error occurs. Default 0. + required: false + role: option + runtime_default: 0 + schema: + type: integer + minimum: 0 + - name: except + description: >- + An action to take if the wrangles encounter an error. This can contain a list of wrangles or a + dictionary of column names and values. If except is not provided, the error will be logged and + the recipe will continue. + required: false + role: option + schema: + type: object + minItems: 1 + items: + $ref: '#/$defs/wrangles/items' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY try implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/utility/_sources/try.md + title: Existing try Markdown +--- + +# Try + +Run a list of wrangles and catch errors. When `except` is provided, its wrangles or fallback column values run after an error; otherwise, the error is logged and the recipe continues. + +## Migrated examples +#### Use Fallback Wrangles After an Error + +##### Recipe + +```yaml +wrangles: + - try: + wrangles: + - risky_wrangle: + input: column + except: + - backup_wrangle: + input: column +``` + +
+ +
+ +##### Input Sample + +_The input dataframe is passed to the primary wrangles._ + +
+ +
+ +##### Output Sample + +_The primary result is returned on success; the `except` result is returned after an error._ + +
+ +
diff --git a/registry/wrangles/compare/lists.md b/registry/wrangles/compare/lists.md new file mode 100644 index 0000000..8e7f258 --- /dev/null +++ b/registry/wrangles/compare/lists.md @@ -0,0 +1,209 @@ +--- +schema_version: '0.1' +type: wrangle +id: a393225e-7ccf-4708-83f8-d5abd6ba9b1e +wrangle_name: lists +namespace: compare +title: Lists +description: Compare multiple lists and return the intersection, difference, or union. +wrangle_key: compare.lists +aliases: [] +slug: compare/lists +status: active +visibility: public +tags: + - compare + - lists +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.compare.lists + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: List of input columns containing lists to compare. + required: true + role: column-selector + schema: + type: array + - name: output + description: Name of the output column. + required: true + role: column-output + schema: + type: string + - name: method + description: Type of comparison to perform. + required: false + role: option + runtime_default: intersection + schema: + type: string + enum: + - intersection + - difference + - union + - name: remove_duplicates + description: Remove duplicates from the result. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: ignore_case + description: Ignore case when comparing string items. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/compare.py + title: WranglesPY compare.lists implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compare/_sources/lists.md + title: Existing compare.lists Markdown +--- + +# Lists + +Compare multiple lists and return the intersection, difference, or union. + +## Migrated examples +#### Comparing the difference between two columns of lists + +##### Recipe + +```yaml +wrangles: + - compare.lists: + input: + - col1 + - col2 + output: Difference + method: difference +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | +| --- | --- | +| [A, B, C] | [C, D, E] | +| [H, I, J, K] | [H, I, J] | +| [X, Y, Z] | [1, 2, 3] | + +
+ +
+ +##### Output Sample + +| Difference | +| --- | +| [A, B] | +| [K] | +| [X, Y, Z] | + +
+ +
+ +#### Comparing the intersection between two columns of lists + +##### Recipe + +```yaml +wrangles: + - compare.lists: + input: + - col1 + - col2 + output: Intersection + method: intersection +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | +| --- | --- | +| [A, B, C] | [C, D, E] | +| [H, I, J, K] | [H, I, J] | +| [X, Y, Z] | [1, 2, 3] | + +
+ +
+ +##### Output Sample + +| Intersection | +| --- | +| [C] | +| [H, I, J] | +| [] | + +
+ +
+ +#### Comparing the union between two columns of lists + +##### Recipe + +```yaml +wrangles: + - compare.lists: + input: + - col1 + - col2 + output: Union + method: union +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | +| --- | --- | +| [A, B, C] | [C, D, E] | +| [H, I, J, K] | [H, I, J] | +| [X, Y, Z] | [1, 2, 3] | + +
+ +
+ +##### Output Sample + +| Union | +| --- | +| [A, B, C, D, E] | +| [H, I, J, K] | +| [X, Y, Z, 1, 2, 3] | + +
+ +
diff --git a/registry/wrangles/compare/text.md b/registry/wrangles/compare/text.md new file mode 100644 index 0000000..c726f75 --- /dev/null +++ b/registry/wrangles/compare/text.md @@ -0,0 +1,281 @@ +--- +schema_version: '0.1' +type: wrangle +id: 31905b74-ce58-45cd-8add-821cc04ab946 +wrangle_name: text +namespace: compare +title: Text +description: >- + Compare two strings and return the intersection or difference, use overlap to find the matching + characters between the two strings, or use similarity to get a numeric similarity score. +wrangle_key: compare.text +aliases: [] +slug: compare/text +status: active +visibility: public +tags: + - compare + - text +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.compare.text + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: The columns to compare. First column is the base column. + required: true + role: column-selector + schema: + type: array + - name: output + description: >- + The column to output the results to. Must be a list of two column names [mask_column, + ratio_column] when method is overlap and include_ratio is true; otherwise a single column + name. + required: true + role: column-output + schema: + type: + - string + - array + - name: method + description: The type of comparison to perform (difference, intersection, overlap, similarity). + required: false + role: option + runtime_default: difference + schema: + type: string + enum: + - difference + - intersection + - overlap + - similarity + - name: char + description: Character to split strings on for difference and intersection. Defaults to a space. + required: false + role: option + runtime_default: ' ' + schema: + type: string + - name: non_match_char + description: Character to use for non-matching characters when using overlap. + required: false + role: option + runtime_default: '*' + schema: + type: string + - name: include_ratio + description: Include the ratio of matching characters when using overlap. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: decimal_places + description: Number of decimal places to round the overlap ratio to. + required: false + role: option + runtime_default: 3 + schema: + type: integer + - name: exact_match + description: Value to use for exact matches when using overlap. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + - name: empty_a + description: Value to use when input A is empty when using overlap. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + - name: empty_b + description: Value to use when input B is empty when using overlap. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + - name: all_empty + description: Value to use when both inputs are empty when using overlap. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + - name: case_sensitive + description: Whether the comparison is case sensitive. Defaults to true. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: metric + description: Metric value accepted by the runtime. + required: false + role: option + runtime_default: token_sort + schema: + type: string +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/compare.py + title: WranglesPY compare.text implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compare/_sources/text.md + title: Existing compare.text Markdown +--- + +# Text + +Compare two strings and return the intersection or difference, or use overlap to find the matching characters between the two strings. + +## Migrated examples +#### Comparing the difference between two columns of text + +##### Recipe + +```yaml +wrangles: + - compare.text: + input: + - col1 + - col2 + output: Difference + method: difference +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | +| --- | --- | +| Large Oak Wood White Marble Top Bookshelf | Large Pine Wood Black Marble Bottom Bookshelf | +| Medium Oak Wood White Marble Top Coffee Table | Medium Maple Wood Orange Steel Top Coffee Table | +| Small Oak Wood White Marble Top Console Table | Small Normal Wood Blue Plastic Top Console Table | + +
+ +
+ +##### Output Sample + +| Difference | +| --- | +| Pine Black Bottom | +| Maple Orange Steel | +| Normal Blue Plastic | + +
+ +
+ +#### Comparing the intersection of two columns of text + +##### Recipe + +```yaml +wrangles: + - compare.text: + input: + - col1 + - col2 + output: Intersection + method: intersection +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | +| --- | --- | +| Large Oak Wood White Marble Top Bookshelf | Large Pine Wood Black Marble Bottom Bookshelf | +| Medium Oak Wood White Marble Top Coffee Table | Medium Maple Wood Orange Steel Top Coffee Table | +| Small Oak Wood White Marble Top Console Table | Small Normal Wood Blue Plastic Top Console Table | + +
+ +
+ +##### Output Sample + +| Intersection | +| --- | +| Large Wood Marble Bookshelf | +| Medium Wood Top Coffee Table | +| Small Wood Top Console Table | + +
+ +
+ +#### Comparing the overlap of two columns of text + +##### Recipe + +```yaml +wrangles: + - compare.text: + input: + - Part Code1 + - Part Code2 + output: Overlap + method: overlap +``` + +
+ +
+ +##### Input Sample + +| Part Code1 | Part Code2 | +| --- | --- | +| SKF6202 | TMKN6202 | +| X06-02-000 | X06-81-000 | +| 7100E15-V-230/3 | 7100E15-V-120/1 | + +
+ +
+ +##### Output Sample + +| Overlap | +| --- | +| ****6202 | +| X06-**-000 | +| 7100E15-V-\**0/\* | + +
+ +
diff --git a/registry/wrangles/compute/case-when.md b/registry/wrangles/compute/case-when.md new file mode 100644 index 0000000..c93bf26 --- /dev/null +++ b/registry/wrangles/compute/case-when.md @@ -0,0 +1,185 @@ +--- +schema_version: '0.1' +type: wrangle +id: 9a9662e4-53d1-4932-8adf-bc3e7aa364ad +wrangle_name: case_when +namespace: compute +title: Case When +description: Assign values to a column based on conditional logic. +wrangle_key: compute.case_when +aliases: [] +slug: compute/case-when +status: active +visibility: public +tags: + - compute + - case-when +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.compute.case_when + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: output + description: Name of the output column. + required: true + role: column-output + schema: + type: string + - name: cases + description: List of conditions and corresponding values. + required: true + role: option + schema: + type: array + minItems: 1 + items: + type: object + required: + - condition + - value + properties: + condition: + type: string + value: + type: + - string + - number + - integer + - boolean + - name: default + description: Value to assign if no conditions are met. Default None. + required: false + role: fallback-value + runtime_default: null + schema: + type: + - string + - number + - integer + - boolean + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/compute.py + title: WranglesPY compute.case_when implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compute/_sources/case-when.md + title: Existing compute.case_when Markdown +--- + +# Case When + +Assign values to a column based on conditional logic. + +## Migrated examples +#### Assigning Letter Grades + +##### Recipe + +```yaml +wrangles: + - compute.case_when: + output: Letter Grade + cases: + - condition: Grade > 89 + value: 'A' + - condition: 90 > Grade > 79 + value: 'B' + - condition: 80 > Grade > 69 + value: 'C' + - condition: 70 > Grade + value: 'F' +``` + +
+ +
+ +##### Input Sample + +| Student | Grade | +| --- | --- | +| Billy | 62 | +| Sarah | 91 | +| Timmy | 88 | +| Tammy | 74 | + +
+ +
+ +##### Output Sample + +| Student | Grade | Letter Grade | +| --- | --- | --- | +| Billy | 62 | F | +| Sarah | 91 | A | +| Timmy | 88 | B | +| Tammy | 74 | C | + +
+ +
+ +#### Assigning Letter Grades with Attendance + +Conditions can be combined so multiple criteria must be met before assigning a value. + +##### Recipe + +```yaml +wrangles: + - compute.case_when: + output: Letter Grade + cases: + - condition: (Grade > .89) & (Attendance == 'Good') + value: 'A' + - condition: (.90 > Grade > .79) & (Attendance == 'Good') + value: 'B' + - condition: (.80 > Grade > .69) & (Attendance == 'Good') + value: 'C' + - condition: (.70 > Grade) or (Attendance == 'Poor') + value: 'F' +``` + +
+ +
+ +##### Input Sample + +| Student | Grade | Attendance | +| --- | --- | --- | +| Billy | 62 | Poor | +| Sarah | 91 | Poor | +| Timmy | 88 | Good | +| Tammy | 74 | Good | + +
+ +
+ +##### Output Sample + +| Student | Grade | Attendance | Letter Grade | +| --- | --- | --- | --- | +| Billy | 62 | Poor | F | +| Sarah | 91 | Poor | F | +| Timmy | 88 | Good | B | +| Tammy | 74 | Good | C | + +
+ +
diff --git a/registry/wrangles/compute/score-search-results.md b/registry/wrangles/compute/score-search-results.md new file mode 100644 index 0000000..68dbc5d --- /dev/null +++ b/registry/wrangles/compute/score-search-results.md @@ -0,0 +1,209 @@ +--- +schema_version: '0.1' +type: wrangle +id: 313a8ec0-cf13-4956-8d3b-5362b8641d0f +wrangle_name: score_search_results +namespace: compute +title: Score Search Results +description: >- + Scores and filters search results based on progressive partial/exact matching. Can return + dictionaries or a parallel list of formatted strings. +wrangle_key: compute.score_search_results +aliases: [] +slug: compute/score-search-results +status: active +visibility: public +tags: + - compute + - score-search-results +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.compute.score_search_results + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: >- + List of 3 to 5 columns -> [results, suppliers, part_codes, mpns (optional), descriptions + (optional)]. + required: true + role: column-selector + schema: + type: array + - name: output + description: >- + Output column for the dictionaries. If a list of 2 is provided, outputs [dicts_column, + pretty_strings_column]. + required: true + role: column-output + schema: + type: + - string + - array + - name: must_match_part_code + description: If true, filters out results that don't satisfy the allowed match types. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: allow_mpn_exact + description: Treat exact MPN matches as valid part code matches. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: allow_mpn_partial + description: Treat partial MPN matches as valid part code matches. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: allow_other_exact + description: Treat exact other part code matches as valid part code matches. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: allow_other_partial + description: Treat partial other part code matches as valid part code matches. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: blacklist_keywords + description: Comma-separated list or array of keywords to filter out URLs containing them. + required: false + role: option + runtime_default: '' + schema: + type: string + - name: mpn_exact_score + description: Mpn Exact Score value accepted by the runtime. + required: false + role: option + runtime_default: 8 + schema: + type: number + - name: mpn_partial_base + description: Mpn Partial Base value accepted by the runtime. + required: false + role: option + runtime_default: 4 + schema: + type: number + - name: part_code_exact_score + description: Part Code Exact Score value accepted by the runtime. + required: false + role: option + runtime_default: 6 + schema: + type: number + - name: part_code_partial_base + description: Part Code Partial Base value accepted by the runtime. + required: false + role: option + runtime_default: 2 + schema: + type: number + - name: supplier_exact_score + description: Supplier Exact Score value accepted by the runtime. + required: false + role: option + runtime_default: 3 + schema: + type: number + - name: supplier_partial_base + description: Supplier Partial Base value accepted by the runtime. + required: false + role: option + runtime_default: 1 + schema: + type: number + - name: context_match_base + description: Context Match Base value accepted by the runtime. + required: false + role: option + runtime_default: 2 + schema: + type: number + - name: fuzzy_match_threshold + description: Fuzzy Match Threshold value accepted by the runtime. + required: false + role: option + runtime_default: 0.8 + schema: + type: number +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/compute.py + title: WranglesPY compute.score_search_results implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compute/_sources/score-search-results.md + title: Existing compute.score_search_results Markdown +--- + +# Score Search Results + +Scores and filters search results based on progressive partial/exact matching. Can return dictionaries or a parallel list of formatted strings. + +## Migrated examples +#### Rank Part Search Results + +This template scores search results using supplier and part-code context. The fields added to each result dictionary depend on the scoring configuration. + +##### Recipe + +```yaml +wrangles: + - compute.score_search_results: + input: + - Search Results + - Suppliers + - Part Codes + output: + - Scored Results + allow_other_exact: true + must_match_part_code: true +``` + +
+ +
+ +##### Input Sample + +| Search Results | Suppliers | Part Codes | +| --- | --- | --- | +| `[{"title": "SKF 6202 bearing", "link": "https://example.com/6202"}]` | `["SKF"]` | `["6202"]` | + +
+ +
+ +##### Output Sample + +| Search Results | Suppliers | Part Codes | Scored Results | +| --- | --- | --- | --- | +| `[{"title": "SKF 6202 bearing", "link": "https://example.com/6202"}]` | `["SKF"]` | `["6202"]` | Ranked result dictionaries | + +
+ +
+ +_Template based on the documented parameters; no published source example is currently available._ diff --git a/registry/wrangles/convert/case.md b/registry/wrangles/convert/case.md new file mode 100644 index 0000000..2709ff6 --- /dev/null +++ b/registry/wrangles/convert/case.md @@ -0,0 +1,88 @@ +--- +schema_version: "0.1" +type: wrangle +id: 12ff4120-3613-4801-8653-99c793477fbc +wrangle_name: case +namespace: convert +title: Convert Case +description: Change the letter case of text values. +wrangle_key: convert.case +aliases: [] +slug: convert/case +status: active +visibility: public +tags: + - convert + - text + - case +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.convert.case + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + where: true + where_params: true + if: true +parameters: + - name: input + description: Name, index, or list of input columns. + required: true + role: column-selector + schema: + type: [string, integer, array] + items: + type: [string, integer] + - name: output + description: Name or list of output columns. If omitted, each input column is overwritten. + required: false + role: column-output + runtime_default: null + schema: + type: [string, array] + items: + type: string + - name: case + description: Letter case to apply. Sentence case lowercases the value and capitalizes sentence starts. + required: false + role: option + runtime_default: lower + schema: + type: string + enum: [lower, upper, title, sentence] +examples: + - id: uppercase-output + title: Write uppercase text to a new column + recipe: |- + wrangles: + - convert.case: + input: product + output: product_upper + case: upper + input_fixture: ../../fixtures/convert.case/uppercase-output.input.json + output_fixture: ../../fixtures/convert.case/uppercase-output.output.json + verification: static +sources: + - id: runtime + resource: https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/convert.py + title: WranglesPY convert.case implementation + - id: legacy-docs + resource: https://wrangles.io/python/recipes/wrangles/convert#case + title: Legacy convert.case documentation +--- + +# Convert Case + +Use `convert.case` to normalize capitalization while keeping the source column +or writing the result to a new column. + +## Behavior + +- Supported modes are `lower`, `upper`, `title`, and `sentence`. +- Omitting `output` overwrites the input column. +- Input and output lists must have equal lengths. +- Non-string values are passed through unchanged and produce a warning. diff --git a/registry/wrangles/convert/data-type.md b/registry/wrangles/convert/data-type.md new file mode 100644 index 0000000..c74839c --- /dev/null +++ b/registry/wrangles/convert/data-type.md @@ -0,0 +1,98 @@ +--- +schema_version: "0.1" +type: wrangle +id: 52384f01-7164-404f-8615-063e7677a588 +wrangle_name: data_type +namespace: convert +title: Convert Data Type +description: Convert values to strings, numbers, booleans, or datetimes. +wrangle_key: convert.data_type +aliases: [] +slug: convert/data-type +status: active +visibility: public +tags: + - convert + - data-type + - validation +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.convert.data_type + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + where: true + where_params: true + if: true +parameters: + - name: input + description: Name, index, or list of input columns. + required: true + role: column-selector + schema: + type: [string, integer, array] + items: + type: [string, integer] + - name: output + description: Name or list of output columns. If omitted, each input column is overwritten. + required: false + role: column-output + runtime_default: null + schema: + type: [string, array] + items: + type: string + - name: data_type + description: Data type to produce. + required: false + role: option + runtime_default: str + schema: + type: string + enum: [str, float, int, bool, datetime] + - name: default + description: Value returned when conversion fails. If omitted, the original value is retained. + required: false + role: fallback-value + runtime_default: null + schema: + type: [string, number, array, object, boolean, "null"] +examples: + - id: integer-with-fallback + title: Convert quantities to integers with a fallback + recipe: |- + wrangles: + - convert.data_type: + input: quantity + output: quantity_integer + data_type: int + default: 0 + input_fixture: ../../fixtures/convert.data_type/integer-with-fallback.input.json + output_fixture: ../../fixtures/convert.data_type/integer-with-fallback.output.json + verification: static +sources: + - id: runtime + resource: https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/convert.py + title: WranglesPY convert.data_type implementation + - id: legacy-docs + resource: https://wrangles.io/python/recipes/wrangles/convert#data-type + title: Legacy convert.data_type documentation +--- + +# Convert Data Type + +Use `convert.data_type` when a recipe needs consistent Python-compatible +values rather than display-only formatting. + +## Behavior + +- Supported target types are `str`, `float`, `int`, `bool`, and `datetime`. +- Omitting `data_type` uses the runtime default `str`. +- Omitting `output` overwrites the input column. +- Failed conversions retain the original value unless `default` is supplied. +- Additional undocumented keyword arguments are implementation details and are + not part of the public Registry contract. diff --git a/registry/wrangles/convert/fraction-to-decimal.md b/registry/wrangles/convert/fraction-to-decimal.md new file mode 100644 index 0000000..69ef4a5 --- /dev/null +++ b/registry/wrangles/convert/fraction-to-decimal.md @@ -0,0 +1,110 @@ +--- +schema_version: '0.1' +type: wrangle +id: 7c55752e-70ab-4809-8298-c59436127457 +wrangle_name: fraction_to_decimal +namespace: convert +title: Fraction to Decimal +description: Convert fractions to decimals. +wrangle_key: convert.fraction_to_decimal +aliases: [] +slug: convert/fraction-to-decimal +status: active +visibility: public +tags: + - convert + - fraction-to-decimal +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.convert.fraction_to_decimal + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: decimals + description: Number of decimals to round fraction. + required: false + role: option + runtime_default: 4 + schema: + type: integer + - name: output + description: Name of the output colum. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/convert.py + title: WranglesPY convert.fraction_to_decimal implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/convert/_sources/fraction-to-decimal.md + title: Existing convert.fraction_to_decimal Markdown +--- + +# Fraction to Decimal + +Convert fractions to decimals. + +## Migrated examples +#### Converting a Column of Fractions to Decimals + +##### Recipe + +```yaml +wrangles: + - convert.fraction_to_decimal: + input: fractions + output: decimals + decimals: 3 +``` + +
+ +
+ +##### Input Sample + +| fractions | +| --- | +| 3/32 | +| 25/64 | + +
+ +
+ +##### Output Sample + +| decimals | +| --- | +| 0.094 | +| 0.391 | + +
+ +
diff --git a/registry/wrangles/convert/from-json.md b/registry/wrangles/convert/from-json.md new file mode 100644 index 0000000..bed4ad6 --- /dev/null +++ b/registry/wrangles/convert/from-json.md @@ -0,0 +1,88 @@ +--- +schema_version: "0.1" +type: wrangle +id: e370dfcf-b0fe-4c48-8a52-6f34c47e7978 +wrangle_name: from_json +namespace: convert +title: Convert From JSON +description: Parse JSON text into lists, objects, scalars, booleans, or null values. +wrangle_key: convert.from_json +aliases: [] +slug: convert/from-json +status: active +visibility: public +tags: + - convert + - json + - structured-data +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.convert.from_json + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + where: true + where_params: true + if: true +parameters: + - name: input + description: Name, index, or list of columns containing valid JSON text. + required: true + role: column-selector + schema: + type: [string, integer, array] + items: + type: [string, integer] + - name: output + description: Name or list of output columns. If omitted, each input column is overwritten. + required: false + role: column-output + runtime_default: null + schema: + type: [string, array] + items: + type: string + - name: default + description: Value returned for empty or invalid JSON. A list may supply one fallback per input column. + required: false + role: fallback-value + runtime_default: null + schema: + type: [string, number, array, object, boolean, "null"] +examples: + - id: parse-structured-values + title: Parse JSON objects and lists + recipe: |- + wrangles: + - convert.from_json: + input: attributes_json + output: attributes + input_fixture: ../../fixtures/convert.from_json/parse-structured-values.input.json + output_fixture: ../../fixtures/convert.from_json/parse-structured-values.output.json + verification: static +sources: + - id: runtime + resource: https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/convert.py + title: WranglesPY convert.from_json implementation + - id: legacy-docs + resource: https://wrangles.io/python/recipes/wrangles/convert#from-json + title: Legacy convert.from_json documentation +--- + +# Convert From JSON + +Use `convert.from_json` when a column contains JSON text that later wrangles +need to treat as structured values. + +## Behavior + +- Each non-fallback value is parsed with Python's JSON parser. +- Omitting `output` overwrites the input column. +- Multiple input columns may share one fallback or use one fallback per input. +- Invalid JSON raises an error unless a non-null fallback is supplied. +- Permissive Python-literal or YAML-like parsing is outside this wrangle's + contract. diff --git a/registry/wrangles/convert/from-yaml.md b/registry/wrangles/convert/from-yaml.md new file mode 100644 index 0000000..8e56142 --- /dev/null +++ b/registry/wrangles/convert/from-yaml.md @@ -0,0 +1,124 @@ +--- +schema_version: '0.1' +type: wrangle +id: b1c20004-5f80-41c2-84d2-2d4601a033b5 +wrangle_name: from_yaml +namespace: convert +title: From YAML +description: Convert a YAML representation into an object. +wrangle_key: convert.from_yaml +aliases: [] +slug: convert/from-yaml +status: active +visibility: public +tags: + - convert + - from-yaml +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.convert.from_yaml + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output column. If omitted, the input column will be overwritten. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: default + description: >- + Value to return if the row is empty or fails to be parsed as YAML. If input is a list, default + may also be a list - either a single value to apply to all columns, or one value per input + column. + required: false + role: fallback-value + runtime_default: null + schema: + type: + - string + - array + - object + - number + - boolean + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/convert.py + title: WranglesPY convert.from_yaml implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/convert/_sources/from-yaml.md + title: Existing convert.from_yaml Markdown +--- + +# From YAML + +Convert a YAML representation into an object. + +## Migrated examples +#### Convert YAML To An Object + +##### Recipe + +```yaml +wrangles: + - convert.from_yaml: + input: column 1 +``` + +
+ +
+ +##### Input Sample + +```yaml +Product Specs: + length: 6 inch + voltage: 24V + weight: 3lb +``` + +
+ +
+ +##### Output Sample + +```python +{ + 'Product Specs': { + 'length': '6 inch', + 'voltage': '24V', + 'weight': '3lb' + } +} +``` + +
+ +
diff --git a/registry/wrangles/convert/to-json.md b/registry/wrangles/convert/to-json.md new file mode 100644 index 0000000..856dc5c --- /dev/null +++ b/registry/wrangles/convert/to-json.md @@ -0,0 +1,130 @@ +--- +schema_version: '0.1' +type: wrangle +id: 94e54eb7-2b8c-4047-89d0-fb5d16baf396 +wrangle_name: to_json +namespace: convert +title: To JSON +description: Convert an object to a JSON representation. +wrangle_key: convert.to_json +aliases: [] +slug: convert/to-json +status: active +visibility: public +tags: + - convert + - to-json +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.convert.to_json + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output column. If omitted, the input column will be overwritten. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: ensure_ascii + description: If true, non-ASCII characters will be escaped. Default is false. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: indent + description: >- + If indent is a non-negative integer or string, then JSON array elements and object members + will be pretty-printed with that indent level. An indent level of 0, negative, or "" will only + insert newlines. None (the default) selects the most compact representation. Using a positive + integer indent indents that many spaces per level. If indent is a string (such as '\t'), that + string is used to indent each level. + required: false + role: option + schema: + type: + - string + - integer + - name: sort_keys + description: >- + If sort_keys is true (defaults to False), then the output of dictionaries will be sorted by + key. + required: false + role: option + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/convert.py + title: WranglesPY convert.to_json implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/convert/_sources/to-json.md + title: Existing convert.to_json Markdown +--- + +# To JSON + +Convert an object to a JSON representation. + +## Migrated examples +#### Convert Text to JSON + +##### Recipe + +```yaml +wrangles: + - convert.to_json: + input: column + output: new column +``` + +
+ +
+ +##### Input Sample + +| column | +| --- | +| `['a', 'python', 'list']` | +| `{'python': 'dict'}` | + +
+ +
+ +##### Output Sample + +| new column | +| --- | +| `["a","python","list"]` | +| `{"python":"dict"}` | + +
+ +
diff --git a/registry/wrangles/convert/to-yaml.md b/registry/wrangles/convert/to-yaml.md new file mode 100644 index 0000000..003a7e9 --- /dev/null +++ b/registry/wrangles/convert/to-yaml.md @@ -0,0 +1,129 @@ +--- +schema_version: '0.1' +type: wrangle +id: 4cd6252f-ce47-4a9d-8272-3d87e875b72a +wrangle_name: to_yaml +namespace: convert +title: To YAML +description: Convert an object to a YAML representation. +wrangle_key: convert.to_yaml +aliases: [] +slug: convert/to-yaml +status: active +visibility: public +tags: + - convert + - to-yaml +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.convert.to_yaml + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output column. If omitted, the input column will be overwritten. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: sort_keys + description: 'If sort_keys is true (default: False), then the output of dictionaries will be sorted by key.' + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: allow_unicode + description: Allow Unicode value accepted by the runtime. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: indent + description: Specify the number of spaces for indentation to specify nested elements. + required: false + role: option + schema: + type: integer +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/convert.py + title: WranglesPY convert.to_yaml implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/convert/_sources/to-yaml.md + title: Existing convert.to_yaml Markdown +--- + +# To YAML + +Convert an object to a YAML representation. + +## Migrated examples +#### Convert a Dictionary to YAML + +##### Recipe + +```yaml +wrangles: + - convert.to_yaml: + input: column 1 + indent: 2 +``` + +
+ +
+ +##### Input Sample + +```python +{ + 'Product Specs': { + 'length': '6 inch', + 'voltage': '24V', + 'weight': '3lb' + } +} +``` + +
+ +
+ +##### Output Sample + +```yaml +Product Specs: + length: 6 inch + voltage: 24V + weight: 3lb +``` + +
+ +
diff --git a/registry/wrangles/create/bins.md b/registry/wrangles/create/bins.md new file mode 100644 index 0000000..d4fce38 --- /dev/null +++ b/registry/wrangles/create/bins.md @@ -0,0 +1,178 @@ +--- +schema_version: '0.1' +type: wrangle +id: 232e3ba0-4735-4934-88aa-0163181abb3f +wrangle_name: bins +namespace: create +title: Bins +description: Create a column that groups data into bins. +wrangle_key: create.bins +aliases: [] +slug: create/bins +status: active +visibility: public +tags: + - create + - bins +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.create.bins + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of new column. + required: true + role: column-output + schema: + type: + - string + - array + - name: bins + description: Defines the number of equal-width bins in the range. + required: true + role: option + schema: + type: + - integer + - array + - name: labels + description: Labels for the returned bins. + required: false + role: option + runtime_default: null + schema: + type: + - string + - array + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py + title: WranglesPY create.bins implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/bins.md + title: Existing create.bins Markdown +--- + +# Bins + +Creates a column that segments and sorts data values into bins. `bins` can be an integer or a list. When `bins` is an integer, the input data is split equally into that number of bins. When `bins` is a list, the input data is split based on the list boundaries. + +## Migrated examples +#### Creating Bins With an Integer + +##### Recipe + +```yaml +wrangles: + - create.bins: + input: Data + output: Category + bins: 3 + labels: + - Bad + - Medium + - Good +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Data | Category | +| --- | --- | +| 1 | Bad | +| 7 | Good | +| 5 | Medium | +| 4 | Medium | +| 6 | Good | +| 3 | Bad | + +
+ +
+ +#### Creating Bins With a List + +##### Recipe + +```yaml +wrangles: + - create.bins: + input: Grades + output: Letter Grade + bins: + - 0 + - 60 + - 70 + - 80 + - 90 + - 100 + labels: + - F + - D + - C + - B + - A +``` + +
+ +
+ +##### Input Sample + +| Grade | Student | +| --- | --- | +| 64 | Charles | +| 92 | Sabrina | +| 76 | Edward | +| 84 | Wendy | + +
+ +
+ +##### Output Sample + +| Grade | Student | Letter Grade | +| --- | --- | --- | +| 64 | Charles | D | +| 92 | Sabrina | A | +| 76 | Edward | C | +| 84 | Wendy | B | + +
+ +
diff --git a/registry/wrangles/create/column.md b/registry/wrangles/create/column.md new file mode 100644 index 0000000..396dc5c --- /dev/null +++ b/registry/wrangles/create/column.md @@ -0,0 +1,222 @@ +--- +schema_version: '0.1' +type: wrangle +id: 5a18e2c8-ec7c-45f5-88fd-bb5c358a8b40 +wrangle_name: column +namespace: create +title: Column +description: Create column(s) with a user defined value. Defaults to None (empty). +wrangle_key: create.column +aliases: [] +slug: create/column +status: active +visibility: public +tags: + - create + - column +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.create.column + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: output + description: 'Name or list of names of new columns or column_name: value pairs.' + required: true + role: column-output + schema: + type: + - string + - array + - name: value + description: >- + (Optional) Value(s) to add in the new column(s). If using a dictionary in output, value can + only be a string. + required: false + role: option + runtime_default: null + schema: + type: + - string + - number + - object + - array + - boolean + - 'null' + - name: value_if_exists + description: >- + Determines behaviour when the output column already exists. existing (default): leave the + column unchanged. coalesce: fill empty/null cells with the new value, keeping non-null cells. + new: overwrite the entire column with the new value. + required: false + role: option + runtime_default: existing + schema: + type: string + enum: + - existing + - coalesce + - new + - name: coalesce_value + description: >- + Only used when value_if_exists is coalesce. Determines which side is preferred when both the + existing and new values are non-empty. existing (default): keep the existing value, only fill + empty/null cells with the new value. new: keep the new value, only fall back to the existing + value where the new value is empty/null. + required: false + role: option + runtime_default: existing + schema: + type: string + enum: + - existing + - new +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py + title: WranglesPY create.column implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/column.md + title: Existing create.column Markdown +--- + +# Column + +Create column(s) with a user defined value. Defaults to `None` (empty). If you need to copy an existing column, use the copy wrangle instead. + +## Migrated examples +#### Creating a New Column + +##### Recipe + +```yaml +wrangles: + - create.column: + output: New Column + value: new value # Optional, otherwise empty + where: column > 1 +``` + +
+ +
+ +##### Input Sample + +| column | +| --- | +| 1 | +| 2 | +| 3 | + +
+ +
+ +##### Output Sample + +| column | New Column | +| --- | --- | +| 1 | | +| 2 | new value | +| 3 | new value | + +
+ +
+ +#### Creating Multiple Columns + +##### Recipe + +```yaml +wrangles: + - create.column: + output: + - New Column 1: new value 1 # Optional, otherwise empty + - New Column 2: new value 2 + - New Column 3: new value 1 +``` + +
+ +
+ +##### Input Sample + +| column | +| --- | +| 1 | +| 2 | +| 3 | + +
+ +
+ +##### Output Sample + +| column | New Column 1 | New Column 2 | New Column 3 | +| --- | --- | --- | --- | +| 1 | new value 1 | new value 2 | new value 1 | +| 2 | new value 1 | new value 2 | new value 1 | +| 3 | new value 1 | new value 2 | new value 1 | + +
+ +
+ +#### Creating Columns That Consist of Lists + +##### Recipe + +```yaml +wrangles: + - create.column: + output: + - New Column: + - 4 + - 5 + - 6 +``` + +
+ +
+ +##### Input Sample + +| column | +| --- | +| 1 | +| 2 | +| 3 | + +
+ +
+ +##### Output Sample + +| column | New Column | +| --- | --- | +| 1 | [4, 5, 6] | +| 2 | [4, 5, 6] | +| 3 | [4, 5, 6] | + +
+ +
+ +Columns of empty lists can also be created by passing an empty list (`[]`) as the column value. diff --git a/registry/wrangles/create/embeddings.md b/registry/wrangles/create/embeddings.md new file mode 100644 index 0000000..da187e7 --- /dev/null +++ b/registry/wrangles/create/embeddings.md @@ -0,0 +1,203 @@ +--- +schema_version: '0.1' +type: wrangle +id: e3518afd-a819-40ec-8b49-eb25690220c1 +wrangle_name: embeddings +namespace: create +title: Embeddings +description: Create an embedding based on text input. +wrangle_key: create.embeddings +aliases: [] +slug: create/embeddings +status: active +visibility: public +tags: + - create + - embeddings +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.create.embeddings + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: The column of text to create the embeddings for. + required: true + role: column-selector + schema: + type: string + - name: api_key + description: The API key. + required: true + role: credential + schema: + type: string + - name: output + description: The output column the embeddings will be saved as. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - 'null' + - name: batch_size + description: The number of rows to submit per individual request. + required: false + role: option + runtime_default: 100 + schema: + type: integer + - name: threads + description: >- + The number of requests to submit in parallel. Each request contains the number of rows set as + batch_size. + required: false + role: option + runtime_default: 10 + schema: + type: integer + - name: output_type + description: Output the embeddings as a numpy array or a python list Default - python list. + required: false + role: column-output + runtime_default: python list + schema: + type: string + enum: + - numpy array + - python list + - name: model + description: The specific model to use to generate the embeddings. + required: false + role: option + runtime_default: text-embedding-3-small + schema: + type: string + - name: retries + description: >- + The number of times to retry if the request fails. This will apply exponential backoff to help + with rate limiting. + required: false + role: option + runtime_default: 0 + schema: + type: integer + - name: url + description: >- + The endpoint to send embedding requests to. Defaults to the standard endpoint for the resolved + provider. Setting a Jina URL without an explicit provider will automatically use Jina's + request/response format. + required: false + role: option + runtime_default: https://api.openai.com/v1/embeddings + schema: + type: string + - name: precision + description: >- + The precision of the embeddings. Default is float32. This should be used with output_type + numpy array. + required: false + role: option + runtime_default: float32 + schema: + type: string + enum: + - float16 + - float32 + - name: provider + description: >- + Controls the request/response format for the embedding API. When omitted, inferred from url + (jina.ai → jina, otherwise openai). Setting provider also sets the default url for that + provider, so you only need one of provider or url for standard endpoints. Use both together + only when pointing to a custom endpoint that uses a non-default provider's API format (e.g. a + Jina-compatible proxy). + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + enum: + - openai + - jina + - name: task + description: >- + The task type for the embedding model. Only applicable for the Jina provider. Selects the + appropriate task-specific adapter. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + enum: + - retrieval.query + - retrieval.passage + - text-matching + - classification + - separation +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py + title: WranglesPY create.embeddings implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/embeddings.md + title: Existing create.embeddings Markdown +--- + +# Embeddings + +Create an embedding based on text input. + +## Migrated examples +#### Creating Embeddings + +##### Recipe + +```yaml +wrangles: + - create.embeddings: + input: my_column + api_key: ${my_key} + output: embeddings +``` + +
+ +
+ +##### Input Sample + +| my_column | +| --- | +| angle grinder | +| jig saw | + +
+ +
+ +##### Output Sample + +| my_column | embeddings | +| --- | --- | +| angle grinder | [0.010793785, -0.010007165, 0.0028609, -0.0139...] | +| jig saw | [-0.008975127, 0.009314879, -0.024150735, -0.0...] | + +
+ +
diff --git a/registry/wrangles/create/guid.md b/registry/wrangles/create/guid.md new file mode 100644 index 0000000..59d51d7 --- /dev/null +++ b/registry/wrangles/create/guid.md @@ -0,0 +1,92 @@ +--- +schema_version: '0.1' +type: wrangle +id: cf3aaab2-3d5b-4c9b-826e-7af7510521c9 +wrangle_name: guid +namespace: create +title: GUID +description: Create column(s) with a GUID. +wrangle_key: create.guid +aliases: [] +slug: create/guid +status: active +visibility: public +tags: + - create + - guid +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.create.guid + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: output + description: Name or list of names of new columns. + required: true + role: column-output + schema: + type: + - string + - array +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py + title: WranglesPY create.guid implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/guid.md + title: Existing create.guid Markdown +--- + +# GUID + +Create a column with a GUID (Globally Unique Identifier). + +## Migrated examples +#### Creating a New GUID Column + +##### Recipe + +```yaml +wrangles: + - create.guid: + output: GUID Column + + # OR + + - create.uuid: + output: GUID Column +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| GUID Column | +| --- | +| 9a13b4dd-1993-4bd2-8974-3f9a0f006d86 | +| 1528d918-ecd7-457c-b44d-3d30705696d3 | + +
+ +
diff --git a/registry/wrangles/create/hash.md b/registry/wrangles/create/hash.md new file mode 100644 index 0000000..8dd0da6 --- /dev/null +++ b/registry/wrangles/create/hash.md @@ -0,0 +1,113 @@ +--- +schema_version: '0.1' +type: wrangle +id: 11e8fc13-00d2-4779-8d87-6288b07de7e7 +wrangle_name: hash +namespace: create +title: Hash +description: Create a hash of a column. +wrangle_key: create.hash +aliases: [] +slug: create/hash +status: active +visibility: public +tags: + - create + - hash +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.create.hash + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of new column. + required: true + role: column-output + schema: + type: + - string + - array + - name: method + description: 'The method to use to hash the input (Default: md5).' + required: false + role: option + runtime_default: md5 + schema: + type: string + enum: + - md5 + - sha1 + - sha256 + - sha512 +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py + title: WranglesPY create.hash implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/hash.md + title: Existing create.hash Markdown +--- + +# Hash + +Create a hash of a column. + +## Migrated examples +#### Creating a New Hash Column + +##### Recipe + +```yaml +wrangles: + - create.hash: + input: Description + output: hash + method: md5 +``` + +
+ +
+ +##### Input Sample + +| Description | +| --- | +| The wrench is blue | +| The hammer is yellow | + +
+ +
+ +##### Output Sample + +| New Column | +| --- | +| ce114e4501d2f4e2dcea3e17b546f339 | +| a54d88e06612d820bc3be72877c74f257b561b19 | + +
+ +
diff --git a/registry/wrangles/create/index.md b/registry/wrangles/create/index.md new file mode 100644 index 0000000..53f05c1 --- /dev/null +++ b/registry/wrangles/create/index.md @@ -0,0 +1,113 @@ +--- +schema_version: '0.1' +type: wrangle +id: 0a4909ca-6e14-4da7-8a70-a7fd106d6944 +wrangle_name: index +namespace: create +title: Index +description: Create column(s) with an incremental index. e.g. 1,2,3... +wrangle_key: create.index +aliases: [] +slug: create/index +status: active +visibility: public +tags: + - create + - index +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.create.index + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: output + description: Name or list of names of new columns. + required: true + role: column-output + schema: + type: + - string + - array + - name: start + description: (Optional; default 1) Starting number for the index. + required: false + role: option + runtime_default: 1 + schema: + type: integer + - name: step + description: (Optional; default 1) Step between successive rows. + required: false + role: option + runtime_default: 1 + schema: + type: integer + - name: by + description: Optional. Cluster the created indexes by one or more columns. + required: false + role: column-selector + runtime_default: null + schema: + type: + - string + - array + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py + title: WranglesPY create.index implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/index.md + title: Existing create.index Markdown +--- + +# Index + +Create a new incremental index. + +## Migrated examples +#### Creating a New Index Column + +##### Recipe + +```yaml +wrangles: + - create.index: + output: New Index + start: 1 # optional + step: 1 # optional +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| New Index | +| --- | +| 1 | +| 2 | + +
+ +
diff --git a/registry/wrangles/create/jinja.md b/registry/wrangles/create/jinja.md new file mode 100644 index 0000000..219cac8 --- /dev/null +++ b/registry/wrangles/create/jinja.md @@ -0,0 +1,125 @@ +--- +schema_version: '0.1' +type: wrangle +id: 10fc6709-16d4-4eab-8f56-6cb5d170ea66 +wrangle_name: jinja +namespace: create +title: Jinja +description: Output text using a jinja template. +wrangle_key: create.jinja +aliases: [] +slug: create/jinja +status: active +visibility: public +tags: + - create + - jinja +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.create.jinja + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: template + description: >- + A dictionary which defines the template/location as well as the form which the template is + input. If any keys use a space, they must be replaced with an underscore. Note: spaces within + column names are replaced by underscores (_). + required: true + role: option + schema: + type: object + additionalProperties: false + properties: + file: + type: string + column: + type: string + string: + type: string + - name: output + description: Name of the column to be output to. + required: true + role: column-output + schema: + type: array + - name: input + description: >- + Specify a name of column containing a dictionary of elements to be used in jinja template. + Otherwise, the column headers will be used as keys. + required: false + role: column-selector + runtime_default: null + schema: + type: + - string + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py + title: WranglesPY create.jinja implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/jinja.md + title: Existing create.jinja Markdown +--- + +# Jinja + +Makes use of a Jinja template to create a description, title, or summary based on your data. + +:::info +Jinja templates do not allow variables with spaces. This wrangle automatically replaces spaces in column headers with underscores, so use underscores instead of spaces when referencing columns in the template. +::: + +## Migrated examples +#### Creating a Jinja Description + +##### Recipe + +```yaml +wrangles: + - create.jinja: + output: Description + template: + string: | + This is a {{ Brand }} {{ Item_Type }} that is {{ Size }} +``` + +
+ +
+ +##### Input Sample + +| Size | Brand | Item Type | +| --- | --- | --- | +| 10mm | SKF | ball bearing | +| 15mm | Timken | bearing seal | + +
+ +
+ +##### Output Sample + +| Size | Brand | Item Type | Description | +| --- | --- | --- | --- | +| 10mm | SKF | ball bearing | This is a SKF ball bearing that is 10mm | +| 15mm | Timken | bearing seal | This is a Timken bearing seal that is 15mm | + +
+ +
+ +Using `|` in YAML denotes a multi-line string that preserves line breaks. Use `>` for a multi-line string when line breaks should not be preserved. diff --git a/registry/wrangles/create/uuid.md b/registry/wrangles/create/uuid.md new file mode 100644 index 0000000..0e64405 --- /dev/null +++ b/registry/wrangles/create/uuid.md @@ -0,0 +1,92 @@ +--- +schema_version: '0.1' +type: wrangle +id: c376f3ff-2283-4c4c-8d7f-70db6f53ed19 +wrangle_name: uuid +namespace: create +title: UUID +description: Create column(s) with a UUID. +wrangle_key: create.uuid +aliases: [] +slug: create/uuid +status: active +visibility: public +tags: + - create + - uuid +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.create.uuid + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: output + description: Name or list of names of new columns. + required: true + role: column-output + schema: + type: + - string + - array +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py + title: WranglesPY create.uuid implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/uuid.md + title: Existing create.uuid Markdown +--- + +# UUID + +Create a column with a UUID (Universally Unique Identifier). + +## Migrated examples +#### Creating a New GUID Column + +##### Recipe + +```yaml +wrangles: + - create.guid: + output: GUID Column + + # OR + + - create.uuid: + output: GUID Column +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| GUID Column | +| --- | +| 9a13b4dd-1993-4bd2-8974-3f9a0f006d86 | +| 1528d918-ecd7-457c-b44d-3d30705696d3 | + +
+ +
diff --git a/registry/wrangles/extract/address.md b/registry/wrangles/extract/address.md new file mode 100644 index 0000000..89b1da8 --- /dev/null +++ b/registry/wrangles/extract/address.md @@ -0,0 +1,130 @@ +--- +schema_version: '0.1' +type: wrangle +id: 44153f95-4581-4cee-898e-b3b4714045fd +wrangle_name: address +namespace: extract +title: Address +description: Extract parts of addresses. Requires WrangleWorks Account. +wrangle_key: extract.address +aliases: [] +slug: extract/address +status: active +visibility: public +tags: + - extract + - address +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.extract.address + contract_status: verified +access: + ai_powered: false + requires_account: true + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output column. + required: true + role: column-output + schema: + type: + - string + - array + - name: dataType + description: Specific part of the address to extract. + required: true + role: option + schema: + type: string + enum: + - streets + - cities + - regions + - countries + - name: output_format + description: Format of the extract output. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - 'null' + enum: + - list + - columns + - concatenate + - name: char + description: Character to use when output_format is concatenate. + required: false + role: option + runtime_default: ', ' + schema: + type: string +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py + title: WranglesPY extract.address implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/address.md + title: Existing extract.address Markdown +--- + +# Address + +Extract geographical information from unstructured text such as streets, cities, or countries. Requires WrangleWorks Account. + +## Migrated examples +#### Extracting Street Name + +##### Recipe + +```yaml +wrangles: + - extract.address: + input: Location + output: Street + dataType: streets + where: SUBSTRING(Location, 1, 3) = '221' +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Street | Location | +| --- | --- | +| ['221 B Baker St.'] | 221 B Baker St., London, England, United Kingdom | +| | London SW1A 1AA, London, England, United Kingdom | + +
+ +
diff --git a/registry/wrangles/extract/ai.md b/registry/wrangles/extract/ai.md new file mode 100644 index 0000000..41ef1a3 --- /dev/null +++ b/registry/wrangles/extract/ai.md @@ -0,0 +1,515 @@ +--- +schema_version: '0.1' +type: wrangle +id: d9f89b00-fda3-4f4c-826c-6417b9390607 +wrangle_name: ai +namespace: extract +title: AI +description: >- + Extract structured data from each input row using an AI model. Define the desired fields with + output, or reuse a saved definition with model_id. +wrangle_key: extract.ai +aliases: [] +slug: extract/ai +status: active +visibility: public +tags: + - ai + - extract +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.extract.ai + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: api_key + description: OpenAI API key used for this wrangle, normally supplied through a recipe variable. + required: true + role: credential + schema: + type: string + - name: input + description: >- + Input column name, column index, or list of columns supplied together as DATA for each row. If + omitted, all dataframe columns are supplied. + required: false + role: column-selector + runtime_default: null + schema: + type: + - array + - 'null' + items: + type: + - string + - integer + - name: output + description: >- + Desired extraction. Use an object keyed by output column name for structured fields, a string + for one prompted value, or an array of field names/definitions. Each field may use the schema + options below. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - object + - 'null' + patternProperties: + ^[a-zA-Z0-9 _-]+$: + type: + - object + - string + properties: + type: + type: string + description: >- + JSON data type required for this field. If omitted, common scalar types are + accepted. Fields allow null by default. + enum: + - string + - number + - integer + - boolean + - 'null' + - object + - array + enum: + type: array + examples: + type: + - array + - object + - string + - number + - integer + - boolean + - 'null' + properties: + name: + type: string + notes: + type: string + input: {} + output: {} + items: + anyOf: + - type: object + required: + - input + - output + properties: + name: + type: string + notes: + type: string + input: {} + output: {} + - {} + properties: + type: + - object + - array + - string + required: + type: + - array + - string + additionalProperties: + type: + - boolean + - object + items: + type: object + nullable: + type: boolean + - name: model_id + description: >- + ID of a saved extract.ai definition. Use it instead of defining an output schema. When output + is also supplied with model_id in a recipe, output names the destination column or columns for + the saved fields. + required: false + role: model-reference + runtime_default: null + schema: + type: + - string + - 'null' + - name: record_examples + description: >- + Whole-record examples. Each example has a separate input value or record and the complete + expected output record. Optional name and notes provide model-visible context. Use {name: ..., + notes: ..., input: ..., output: ...}. Omitted nullable output fields are completed with null. + Required non-null nested properties must be supplied. This differs from examples nested under + one output field, which teach only that field. + required: false + role: option + runtime_default: null + schema: + type: + - array + - object + - 'null' + required: + - input + - output + properties: + name: + type: string + notes: + type: string + input: {} + output: {} + items: + type: object + required: + - input + - output + properties: + name: + type: string + notes: + type: string + input: {} + output: {} + - name: output_format + description: >- + How extracted fields are written. columns writes one dataframe column per field (default); + dictionary keeps one object; concatenate joins fields into one string using char. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - 'null' + enum: + - dictionary + - columns + - concatenate + - name: char + description: Separator used only when output_format is concatenate. Defaults to comma-space. + required: false + role: option + runtime_default: ', ' + schema: + type: string + - name: web_search + description: >- + Enable OpenAI Responses web search; the model decides when searching helps. When true, every + row also receives web_search_sources: a deduplicated list of {title, url} objects in source + order, or an empty list when no source was used. This reserved column is automatic. Requires + protocol responses. Defaults to false. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: instructions + description: >- + Additional guidance applied to every input row. Use this for decision rules, evidence + priorities, normalization requirements, or other behavior that applies to the complete + extraction. + required: false + role: option + runtime_default: null + schema: + type: + - string + - array + - 'null' + items: + type: string + - name: model + description: >- + OpenAI model ID for this call. If omitted, uses the configured extract.ai default; a saved + model definition may supply its own model. + required: false + role: option + schema: + type: string + - name: threads + description: Maximum number of row-level requests sent in parallel. The configured default is 32. + required: false + role: option + schema: + type: integer + minimum: 1 + - name: timeout + description: >- + Maximum seconds for one HTTP attempt. The configured default is 12; deadline can end the + overall call sooner. + required: false + role: option + schema: + type: number + exclusiveMinimum: 0 + - name: retries + description: >- + Number of additional attempts after a retryable failure. The configured default is 1. Backoff + and request timeouts remain bounded by deadline. + required: false + role: option + schema: + type: integer + minimum: 0 + - name: url + description: >- + Override the endpoint for the selected protocol. A chat/completions URL selects the legacy + protocol only when protocol is omitted; new recipes should use the configured Responses + endpoint. + required: false + role: option + schema: + type: string + - name: provider + description: AI service provider. Currently only OpenAI is supported. + required: false + role: option + schema: + type: string + enum: + - openai + - name: protocol + description: >- + OpenAI API protocol. Responses is the configured default and is required for web_search; + chat_completions remains available for legacy definitions. + required: false + role: option + schema: + type: string + enum: + - responses + - chat_completions + - name: deadline + description: >- + Total seconds allowed for the entire wrangle call, including queued work, retries, and + backoff. The configured default is 15. + required: false + role: option + schema: + type: number + exclusiveMinimum: 0 + - name: store + description: Whether OpenAI may store Responses API results. Defaults to false. + required: false + role: option + schema: + type: boolean + - name: cache + description: >- + Reuse identical successful results from the bounded warm-instance cache. Defaults to true. Set + false when fresh model or web results are required. + required: false + role: option + schema: + type: boolean + - name: cache_ttl + description: >- + Maximum age in seconds for a cached result used by this call. Applies to extracted values and + web_search_sources together. + required: false + role: option + schema: + type: number + exclusiveMinimum: 0 + - name: strict + description: >- + Require OpenAI structured-output strict mode. Defaults to true. Definitions with dynamic + dictionary keys automatically switch to non-strict provider mode and are still validated + locally. + required: false + role: option + schema: + type: boolean + - name: reasoning + description: >- + Responses API reasoning controls. Set effort for reasoning-capable models. The configured + default is none when that model supports it; otherwise the provider default applies. + required: false + role: option + schema: + type: object + properties: + effort: + type: string + enum: + - none + - minimal + - low + - medium + - high + - xhigh + - name: verbosity + description: >- + Responses API text verbosity for compatible models. Defaults to low when supported; ignored + with a warning for incompatible models. + required: false + role: option + schema: + type: string + enum: + - low + - medium + - high +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py + title: WranglesPY extract.ai implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/ai.md + title: Existing extract.ai Markdown +--- + +# AI + +Use AI to extract meaningful structured data. `extract.ai` can be used recipe-first, where the output schema is defined in the recipe, or model-first, where a saved extract.ai model is called by `model_id`. + +:::info +For saved extract.ai models, this is the preferred calling pattern compared with using `extract.custom`. +::: + +## Migrated examples +#### Making Use of Output Parameters + +##### Recipe + +```yaml +wrangles: + - extract.ai: + api_key: Your OpenAI api key + input: Product Specs + output: + Blade Diameter: + type: number + description: The diameter of the blade used, reported in inches. + default: N/A + examples: + - 4.5" + - 8 inch + Max. RPM: + type: number + description: The maximum rotations per minute (rpm). + default: 3600 + examples: + - 3600 max. rpm +``` + +
+ +
+ +##### Input Sample + +| Product Specs | +| --- | +| 18V Cordless 4.5in angle grinder | +| 120V 12in chop saw 3600 max. rpm | + +
+ +
+ +##### Output Sample + +| Blade Diameter | Max. RPM | +| --- | --- | +| 4.5 inches | | +| 12 inches | 3600 | + +
+ +
+ +#### Description Only + +##### Recipe + +```yaml +wrangles: + - extract.ai: + api_key: Your OpenAI api key + input: Product Specs + output: + Blade Diameter: The diameter of the blade used, reported in inches. + Max. RPM: The maximum rotations per minute (rpm). +``` + +
+ +
+ +##### Input Sample + +| Product Specs | +| --- | +| 18V Cordless 4.5in angle grinder | +| 120V 12in chop saw 3600 max. rpm | + +
+ +
+ +##### Output Sample + +| Blade Diameter | Max. RPM | +| --- | --- | +| 4.5 inches | | +| 12 inches | 3600 | + +
+ +
+ +#### Model Based Column Output by Name + +##### Recipe + +```yaml +wrangles: + - extract.ai: + api_key: Your OpenAI api key + model_id: xxxx-xxxx-xxxxxxxx + output: + - Colors + - Sizes +``` + +
+ +
+ +##### Input Sample + +| Items | +| --- | +| Large yellow square | +| Medium orange triangle | + +
+ +
+ +##### Output Sample + +| Colors | Sizes | +| --- | --- | +| [yellow] | Large | +| [orange] | Medium | + +
+ +
diff --git a/registry/wrangles/extract/attributes.md b/registry/wrangles/extract/attributes.md new file mode 100644 index 0000000..3bb2db0 --- /dev/null +++ b/registry/wrangles/extract/attributes.md @@ -0,0 +1,261 @@ +--- +schema_version: '0.1' +type: wrangle +id: 03ccedef-c938-41f1-8980-280f1a91542e +wrangle_name: attributes +namespace: extract +title: Attributes +description: >- + Extract numeric attributes from the input such as weights or lengths. Requires WrangleWorks + Account. +wrangle_key: extract.attributes +aliases: [] +slug: extract/attributes +status: active +visibility: public +tags: + - extract + - attributes +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.extract.attributes + contract_status: verified +access: + ai_powered: false + requires_account: true + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output column. + required: true + role: column-output + schema: + type: + - string + - array + - name: responseContent + description: Span - returns the text found. object - returns an object with the value and unit. + required: false + role: option + runtime_default: span + schema: + type: string + enum: + - span + - object + - name: attribute_type + description: Request only a specific type of attribute. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + enum: + - angle + - area + - capacitance + - charge + - current + - data transfer rate + - electrical conductance + - electrical resistance + - energy + - force + - frequency + - inductance + - instance frequency + - length + - luminous flux + - weight + - power + - pressure + - speed + - velocity + - temperature + - time + - voltage + - volume + - volumetric flow + - name: desired_unit + description: Convert the extracted unit to the desired unit. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + - name: bound + description: >- + When returning an object, if the input is a range (e.g. 10-20mm) set the value to return. min, + mid or max. Default mid. + required: false + role: option + runtime_default: mid + schema: + type: string + enum: + - min + - mid + - max + - name: first_element + description: Get the first element from results. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: output_format + description: Format of the extract output. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - 'null' + enum: + - list + - dictionary + - columns + - concatenate + - name: char + description: Character to use when output_format is concatenate. + required: false + role: option + runtime_default: ', ' + schema: + type: string +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py + title: WranglesPY extract.attributes implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/attributes.md + title: Existing extract.attributes Markdown +--- + +# Attributes + +Extract numeric attributes from unstructured text such as lengths, voltages, weights, or temperatures. Requires WrangleWorks Account. + +## Migrated examples +#### Extracting All Attributes + +##### Recipe + +```yaml +wrangles: + - extract.attributes: + input: tools + output: attributes + responseContent: span +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Tools (input) | Attributes (span )(output) | +| --- | --- | +| hammer 5kg, 0.5m | \{'length': ['0.5m'], 'mass': ['5kg']\} | + +
+ +
+ +#### Extracting All Attributes + +##### Recipe + +```yaml +wrangles: + - extract.attributes: + input: tools + output: attributes + responseContent: object +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Tools (input) | Attributes (Object) (output) | +| --- | --- | +| hammer 5kg, 0.5m | \{'length': [\{'unit': 'metre', 'value': 0.5\}], 'mass': [\{'unit': 'kilogram', 'value': 5.0\}]\} | + +
+ +
+ +#### Extracting Specific Attributes + +##### Recipe + +```yaml +wrangles: + - extract.attributes: + input: Tools + output: attributes + responseContent: span + attribute_type: mass # Specific attributes +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +_No sample available._ + +
+ +
diff --git a/registry/wrangles/extract/brackets.md b/registry/wrangles/extract/brackets.md new file mode 100644 index 0000000..03b9f40 --- /dev/null +++ b/registry/wrangles/extract/brackets.md @@ -0,0 +1,137 @@ +--- +schema_version: '0.1' +type: wrangle +id: 9b4c15fa-2aaa-40c8-8834-6e835760bee5 +wrangle_name: brackets +namespace: extract +title: Brackets +description: Extract text properties in brackets from the input. +wrangle_key: extract.brackets +aliases: [] +slug: extract/brackets +status: active +visibility: public +tags: + - extract + - brackets +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.extract.brackets + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output columns. + required: true + role: column-output + schema: + type: + - string + - array + - name: find + description: >- + (Optional) The type of brackets to find (round '()', square '[]', curly '{}', angled '<>'). + Default is all brackets. + required: false + role: option + runtime_default: all + schema: + type: + - string + - array + - name: include_brackets + description: (Optional) Include the brackets in the output. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: output_format + description: Format of the extract output. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - 'null' + enum: + - list + - columns + - concatenate + - name: char + description: Character to use when output_format is concatenate. + required: false + role: option + runtime_default: ', ' + schema: + type: string +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py + title: WranglesPY extract.brackets implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/brackets.md + title: Existing extract.brackets Markdown +--- + +# Brackets + +Extract text in brackets from the input. + +## Migrated examples +#### Extracting Data Within Brackets + +##### Recipe + +```yaml +wrangles: + - extract.brackets: + input: Data + output: Output +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Data | Output | +| --- | --- | +| `{Hello}` | Hello | +| `[Wrangles]` | Wrangles | +| `(!)` | ! | +| `` | ! | + +
+ +
diff --git a/registry/wrangles/extract/codes.md b/registry/wrangles/extract/codes.md new file mode 100644 index 0000000..7a8fb3b --- /dev/null +++ b/registry/wrangles/extract/codes.md @@ -0,0 +1,219 @@ +--- +schema_version: '0.1' +type: wrangle +id: da591387-0fca-4842-8bcb-d19f561f0292 +wrangle_name: codes +namespace: extract +title: Codes +description: Extract alphanumeric codes from the input. Requires WrangleWorks Account. +wrangle_key: extract.codes +aliases: [] +slug: extract/codes +status: active +visibility: public +tags: + - extract + - codes +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.extract.codes + contract_status: verified +access: + ai_powered: false + requires_account: true + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name or list of input columns. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name or list of output columns. + required: true + role: column-output + schema: + type: + - string + - array + - name: first_element + description: Get the first element from results. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: output_format + description: Format of the extract output. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - 'null' + enum: + - list + - columns + - concatenate + - name: char + description: Character to use when output_format is concatenate. + required: false + role: option + runtime_default: ', ' + schema: + type: string + - name: min_length + description: Minimum length of allowed results. + required: false + role: option + schema: + type: + - integer + - string + - name: max_length + description: Maximum length of allowed results. + required: false + role: option + schema: + type: + - integer + - string + - name: strategy + description: >- + Controls filtering of likely false positives such as measurements. Lenient skips this filter; + balanced and strict currently apply the same filter. Default is balanced. Unless min_length is + provided, minimum lengths default to 3 for lenient, 4 for balanced, and 5 for strict. + required: false + role: option + schema: + type: string + enum: + - lenient + - balanced + - strict + - name: sort_order + description: Default is input order. Also allows longest or shortest. + required: false + role: option + schema: + type: string + enum: + - input + - longest + - shortest + - name: disallowed_patterns + description: A pattern or JSON array of regex patterns to not include in the found codes. + required: false + role: option + schema: + type: string + - name: include_multi_part_tokens + description: Whether to include multi-part tokens that have a space. Default True. + required: false + role: option + schema: + type: boolean + - name: extract_raw + description: >- + Whether to return tokens with their adjacent non-whitespace characters included, rather than + the cleaned token. Default False. + required: false + role: option + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py + title: WranglesPY extract.codes implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/codes.md + title: Existing extract.codes Markdown +--- + +# Codes + +Extract alphanumeric codes from unstructured text. Can be performed on one column or multiple columns. Requires WrangleWorks Account. + +## Migrated examples +#### Extracting Codes From Single Column + +##### Recipe + +```yaml +# One column input +wrangles: + - extract.codes: + input: Secret + output: Code Extract +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Secret | Code Extract | +| --- | --- | +| to gain access use Z1ON0101 | ['Z1ON0101'] | + +
+ +
+ +#### Extracting Codes From Multiple Columns + +##### Recipe + +```yaml +# Multi column input +wrangles: + - extract.codes: + input: + - code1 + - code2 + output: Codes +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Codes | code1 | code2 | +| --- | --- | --- | +| ['CH465517080-1', 'CH465517080-2'] | code CH465517080-1 | code CH465517080-2 | + +
+ +
diff --git a/registry/wrangles/extract/custom.md b/registry/wrangles/extract/custom.md new file mode 100644 index 0000000..05dc9f9 --- /dev/null +++ b/registry/wrangles/extract/custom.md @@ -0,0 +1,273 @@ +--- +schema_version: '0.1' +type: wrangle +id: e8e96b76-86bf-41dc-8d16-825dcff9688b +wrangle_name: custom +namespace: extract +title: Custom +description: >- + Extract data from the input using a DIY or bespoke extraction wrangle. Requires WrangleWorks + Account and Subscription. +wrangle_key: extract.custom +aliases: [] +slug: extract/custom +status: active +visibility: public +tags: + - extract + - custom +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.extract.custom + contract_status: verified +access: + ai_powered: false + requires_account: true + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name or list of input columns. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: model_id + description: The ID of the wrangle to use. + required: true + role: model-reference + schema: + type: + - string + - array + - name: output + description: Name or list of output columns. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: use_labels + description: 'Use Labels in the extract output {label: value}.' + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: first_element + description: Get the first element from results. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: case_sensitive + description: Allows the wrangle to be case sensitive if set to True, default is False. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: extract_raw + description: Extract the raw data from the wrangle. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: use_spellcheck + description: Use spellcheck to also find minor mispellings compared to the reference data. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: include_empty_labels + description: Include labels with no found values in the output when using use_labels=True. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: sort + description: Sort the results. + required: false + role: option + runtime_default: training_order + schema: + type: string + enum: + - training_order + - input_order + - longest + - shortest + - alphabetical + - reverse_alphabetical + - ascending + - descending + - name: output_format + description: Format of the extract output. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - 'null' + enum: + - list + - dictionary + - columns + - concatenate + - name: char + description: Character to use when output_format is concatenate. + required: false + role: option + runtime_default: ', ' + schema: + type: string +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py + title: WranglesPY extract.custom implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/custom.md + title: Existing extract.custom Markdown +--- + +# Custom + +Extract data from the input using a DIY or bespoke extraction wrangle. Can be performed on one column or multiple columns. Requires WrangleWorks Account and Subscription. + +:::info +Non-regex pattern matching extracts whole-word matches separated by word boundaries. Word boundaries include anything that is not a letter, number, or underscore. +::: + +## Migrated examples +#### Extracting Wood Types From Single Column + +##### Recipe + +```yaml +# One column input +wrangles: + - extract.custom: + input: Product + output: Wood Types + model_id: model_id_here +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Product | Wood Types | +| --- | --- | +| Dining Oakwood Chair | Oakwood | +| Living Room Teakwood Frame Mirror | Teakwood | + +
+ +
+ +#### Extracting Wood Types From Multiple Columns + +##### Recipe + +```yaml +# Multi column input +wrangles: + - extract.custom: + input: + - Part 1 of 2 + - Part 2 of 2 + output: Wood Types + model_id: model_id_here +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Wood Types | Part 1 of 2 | Part 2 of 2 | +| --- | --- | --- | +| ['Acacia Wood', 'Imitation Wood'] | Dining Acacia Wood Table | Imitation Wood Table Chairs | + +
+ +
+ +#### Using Multiple Extract Models + +##### Recipe + +```yaml +# Multiple Models +wrangles: + - extract.custom: + input: + - Product + - Product + output: + - Wood Types + - Item Type + model_id: + - wood_Type_model_id + - item_type_model_id +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Product | Item Type | Wood Types | +| --- | --- | --- | +| Dining Oakwood Chair | Chair | Oakwood | +| Living Room Teakwood Frame Mirror | Mirror | Teakwood | + +
+ +
diff --git a/registry/wrangles/extract/date-properties.md b/registry/wrangles/extract/date-properties.md new file mode 100644 index 0000000..22d1a39 --- /dev/null +++ b/registry/wrangles/extract/date-properties.md @@ -0,0 +1,113 @@ +--- +schema_version: '0.1' +type: wrangle +id: a346de62-93cd-44ba-8d30-a6305629c6d7 +wrangle_name: date_properties +namespace: extract +title: Date Properties +description: Extract date properties from a date (day, month, year, etc...). +wrangle_key: extract.date_properties +aliases: [] +slug: extract/date-properties +status: active +visibility: public +tags: + - extract + - date-properties +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.extract.date_properties + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: property + description: Property to extract from date. + required: true + role: option + schema: + type: string + enum: + - day + - day_of_year + - month + - month_name + - weekday + - week_day_name + - week_year + - quarter + - name: output + description: Name of the output columns. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py + title: WranglesPY extract.date_properties implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/date-properties.md + title: Existing extract.date_properties Markdown +--- + +# Date Properties + +Extract date properties from a date, such as day, month, year, weekday, or quarter. + +## Migrated examples +#### Extracting Month From Date + +##### Recipe + +```yaml +wrangles: + - extract.date_properties: + input: Date + output: Output + property: month_name +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Date | Output | +| --- | --- | +| 1992-08-13 00:00:00 | August | + +
+ +
diff --git a/registry/wrangles/extract/date-range.md b/registry/wrangles/extract/date-range.md new file mode 100644 index 0000000..89811d8 --- /dev/null +++ b/registry/wrangles/extract/date-range.md @@ -0,0 +1,124 @@ +--- +schema_version: '0.1' +type: wrangle +id: 9cebfa6f-a524-4aec-84a7-02d77b792843 +wrangle_name: date_range +namespace: extract +title: Date Range +description: Extract date range frequency from two dates. +wrangle_key: extract.date_range +aliases: [] +slug: extract/date-range +status: active +visibility: public +tags: + - extract + - date-range +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.extract.date_range + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: start_time + description: Name of the start date column. + required: true + role: option + schema: + type: string + - name: end_time + description: Name of the end date column. + required: true + role: option + schema: + type: string + - name: output + description: Name of the output column. + required: true + role: column-output + schema: + type: string + - name: range + description: Type of frequency to count. + required: false + role: option + runtime_default: day + schema: + type: string + enum: + - business days + - days + - weeks + - months + - semi months + - business month ends + - month starts + - semi month starts + - business month starts + - quarters + - quarter starts + - years + - business hours + - hours + - minutes + - seconds + - milliseconds +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py + title: WranglesPY extract.date_range implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/date-range.md + title: Existing extract.date_range Markdown +--- + +# Date Range + +Extract date range frequency from two dates. + +## Migrated examples +#### Extracting Number of Months From Range + +##### Recipe + +```yaml +wrangles: + - extract.date_range: + start_time: Start + end_time: End + output: Output + range: months +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| End | Start | Output | +| --- | --- | --- | +| 2023-08-13 00:00:00 | 1992-08-13 00:00:00 | 371 | + +
+ +
diff --git a/registry/wrangles/extract/html.md b/registry/wrangles/extract/html.md new file mode 100644 index 0000000..938610c --- /dev/null +++ b/registry/wrangles/extract/html.md @@ -0,0 +1,162 @@ +--- +schema_version: '0.1' +type: wrangle +id: 728fc87a-a20d-4efa-833a-612e0b5eadc3 +wrangle_name: html +namespace: extract +title: HTML +description: Extract elements from strings containing html. Requires WrangleWorks Account. +wrangle_key: extract.html +aliases: [] +slug: extract/html +status: active +visibility: public +tags: + - extract + - html +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.extract.html + contract_status: verified +access: + ai_powered: false + requires_account: true + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name or list of input columns. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: data_type + description: The type of data to extract. + required: true + role: option + schema: + type: string + enum: + - text + - links + - name: output + description: Name or list of output columns. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: output_format + description: Format of the extract output. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - 'null' + enum: + - list + - columns + - concatenate + - name: char + description: Character to use when output_format is concatenate. + required: false + role: option + runtime_default: ', ' + schema: + type: string +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py + title: WranglesPY extract.html implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/html.md + title: Existing extract.html Markdown +--- + +# HTML + +Extract text and links from HTML elements. Requires WrangleWorks Account. + +## Migrated examples +#### Extracting Text From HTML + +##### Recipe + +```yaml +wrangles: + - extract.html: + input: HTML + output: Text + data_type: text +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| HTML | Text | +| --- | --- | +| ` | | + +
+ +
+ +#### Extracting Links From HTML + +##### Recipe + +```yaml +wrangles: + - extract.html: + input: HTML + output: Links + data_type: links +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| HTML | Links | +| --- | --- | +| ` | | + +
+ +
diff --git a/registry/wrangles/extract/properties.md b/registry/wrangles/extract/properties.md new file mode 100644 index 0000000..4c4198c --- /dev/null +++ b/registry/wrangles/extract/properties.md @@ -0,0 +1,184 @@ +--- +schema_version: '0.1' +type: wrangle +id: 23bbdb86-fd13-4b78-8fff-a7a76769ab63 +wrangle_name: properties +namespace: extract +title: Properties +description: Extract text properties from the input. Requires WrangleWorks Account. +wrangle_key: extract.properties +aliases: [] +slug: extract/properties +status: active +visibility: public +tags: + - extract + - properties +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.extract.properties + contract_status: verified +access: + ai_powered: false + requires_account: true + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output columns. + required: true + role: column-output + schema: + type: + - string + - array + - name: property_type + description: The specific type of properties to extract. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + enum: + - Colours + - Materials + - Shapes + - Standards + - name: return_data_type + description: Legacy format option. Prefer output_format. + required: false + role: option + runtime_default: list + schema: + type: string + enum: + - list + - string + - name: first_element + description: Get the first element from results. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: output_format + description: Format of the extract output. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - 'null' + enum: + - list + - dictionary + - columns + - concatenate + - name: char + description: Character to use when output_format is concatenate. + required: false + role: option + runtime_default: ', ' + schema: + type: string +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py + title: WranglesPY extract.properties implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/properties.md + title: Existing extract.properties Markdown +--- + +# Properties + +Extract categorical properties from unstructured text, such as colours or materials. Requires WrangleWorks Account. + +## Migrated examples +#### Extracting All Properties + +##### Recipe + +```yaml +wrangles: + - extract.properties: + input: water bottles + output: properties +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Products | Product Properties | +| --- | --- | +| Stainless Steel Blue Bottle | \{'Colours': ['Blue'], 'Materials': ['Stainless Steel']\} | +| Plastic Yellow Bottle | \{'Colours': ['Yellow'], 'Materials': ['Plastic']\} | + +
+ +
+ +#### Extracting Colour + +##### Recipe + +```yaml +wrangles: + - extract.properties: + input: water bottles + output: properties + property_type: colours # Optional +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Products | Product Colours | +| --- | --- | +| Stainless Steel Blue Bottle | ['Blue'] | +| Plastic Yellow Bottle | ['Yellow'] | + +
+ +
diff --git a/registry/wrangles/extract/regex.md b/registry/wrangles/extract/regex.md new file mode 100644 index 0000000..8529f1a --- /dev/null +++ b/registry/wrangles/extract/regex.md @@ -0,0 +1,180 @@ +--- +schema_version: '0.1' +type: wrangle +id: 9aa0253a-4b70-4737-832c-964e15967289 +wrangle_name: regex +namespace: extract +title: Regex +description: Extract matches or specific capture groups using regex. +wrangle_key: extract.regex +aliases: [] +slug: extract/regex +status: active +visibility: public +tags: + - extract + - regex +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.extract.regex + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column(s). + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: find + description: Pattern to find using regex. + required: true + role: option + schema: + type: string + - name: output + description: Name of the output column(s). + required: true + role: column-output + schema: + type: + - string + - array + - name: output_pattern + description: >- + Specifies the format to output matches and specific capture groups using backreferences (e.g., + `\1`, `\2`). Default is to return entire matches. **Example**: For a regex pattern + `r'(\d+)\s(\w+)'` and `output_pattern = '\2 \1'`, with input `'120 volt'`, the output would be + `'volt 120'`. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - 'null' + - name: first_element + description: Get the first element from results. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: output_format + description: Format of the extract output. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - 'null' + enum: + - list + - columns + - concatenate + - name: char + description: Character to use when output_format is concatenate. + required: false + role: option + runtime_default: ', ' + schema: + type: string +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py + title: WranglesPY extract.regex implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/regex.md + title: Existing extract.regex Markdown +--- + +# Regex + +Extract single values, matches, or specific capture groups using regex. + +## Migrated examples +#### Extracting Number of Months From Range + +##### Recipe + +```yaml +wrangles: + - extract.regex: + input: Product + output: GPM + find: \d\.?\d? ?gpm +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| GPM | Product | +| --- | --- | +| 3.4 gpm | 3.4 gpm water pump | +| 2gpm | 2gpm water pump | + +
+ +
+ +#### Implementing output_pattern + +##### Recipe + +```yaml +wrangles: + - extract.regex: + input: Product + output: GPM + find: (\d\.?\d?) ?gpm + output_pattern: \1 Gallons Per Minute +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| GPM | Product | +| --- | --- | +| 3.4 Gallons Per Minute | 3.4 gpm water pump for 5.5 gallon tank | +| 2 Gallons Per Minute | 2gpm water pump for 2 gal tank | + +
+ +
diff --git a/registry/wrangles/format/dates.md b/registry/wrangles/format/dates.md new file mode 100644 index 0000000..519bb66 --- /dev/null +++ b/registry/wrangles/format/dates.md @@ -0,0 +1,107 @@ +--- +schema_version: '0.1' +type: wrangle +id: a3c15135-4f7a-4659-83fd-f657afa603c9 +wrangle_name: dates +namespace: format +title: Dates +description: Format a date. +wrangle_key: format.dates +aliases: [] +slug: format/dates +status: active +visibility: public +tags: + - format + - dates +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.format.dates + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: format + description: String pattern to format date. + required: true + role: option + schema: + type: string + - name: output + description: Name of the output column. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py + title: WranglesPY format.dates implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/dates.md + title: Existing format.dates Markdown +--- + +# Dates + +Format a date into the desired pattern. + +## Migrated examples +#### Changing The Format of a Date + +##### Recipe + +```yaml +wrangles: + - format.dates: + input: Date + output: Output Format + format: '%Y-%m-%d' # must be wrapped by quotes " or ' +``` + +
+ +
+ +##### Input Sample + +| Date | +| --- | +| 6/23/1912 | + +
+ +
+ +##### Output Sample + +| Date | Output Format | +| --- | --- | +| 6/23/1912 | 1912-06-23 | + +
+ +
diff --git a/registry/wrangles/format/pad.md b/registry/wrangles/format/pad.md new file mode 100644 index 0000000..84de5da --- /dev/null +++ b/registry/wrangles/format/pad.md @@ -0,0 +1,133 @@ +--- +schema_version: '0.1' +type: wrangle +id: 76c19378-38f4-45aa-85d1-3cdf8f8aae29 +wrangle_name: pad +namespace: format +title: Pad +description: Pad a string to a fixed length. +wrangle_key: format.pad +aliases: [] +slug: format/pad +status: active +visibility: public +tags: + - format + - pad +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.format.pad + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: pad_length + description: Length for the output. + required: true + role: option + schema: + type: integer + - name: side + description: Side from which to fill resulting string. + required: true + role: option + schema: + type: string + - name: char + description: The character to pad the input with. + required: true + role: option + schema: + type: string + - name: output + description: Name of the output column. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: skip_empty + description: If true, skip padding for empty or whitespace-only values. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py + title: WranglesPY format.pad implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/pad.md + title: Existing format.pad Markdown +--- + +# Pad + +Pad a string to a fixed length + +## Migrated examples +#### Adding Dashes to Part Numbers + +##### Recipe + +```yaml +wrangles: + - format.pad: + input: Part Number + pad_length: 5 + side: left + char: "-" +``` + +
+ +
+ +##### Input Sample + +| Part Number | +| --- | +| 0458 | +| 396 | +| 84 | +| 98516 | + +
+ +
+ +##### Output Sample + +| Part Number | +| --- | +| -0458 | +| --396 | +| ---84 | +| 98516 | + +
+ +
diff --git a/registry/wrangles/format/prefix.md b/registry/wrangles/format/prefix.md new file mode 100644 index 0000000..6035fd6 --- /dev/null +++ b/registry/wrangles/format/prefix.md @@ -0,0 +1,121 @@ +--- +schema_version: '0.1' +type: wrangle +id: c12f99b9-2363-4da7-8405-7c73b87906e5 +wrangle_name: prefix +namespace: format +title: Prefix +description: Add a prefix to a column. +wrangle_key: format.prefix +aliases: [] +slug: format/prefix +status: active +visibility: public +tags: + - format + - prefix +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.format.prefix + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: value + description: Prefix value to add. + required: true + role: option + schema: + type: + - string + - integer + - number + - name: output + description: (Optional) Name of the output column. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: skip_empty + description: Whether to skip empty values. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py + title: WranglesPY format.prefix implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/prefix.md + title: Existing format.prefix Markdown +--- + +# Prefix + +Add a prefix to a column. + +## Migrated examples +#### Adding a Prefix to a String + +##### Recipe + +```yaml +wrangles: + - format.prefix: + input: Data + output: Prefix + value: anti +``` + +
+ +
+ +##### Input Sample + +| Data | +| --- | +| freeze | +| dote | +| hero | + +
+ +
+ +##### Output Sample + +| Data | Prefix | +| --- | --- | +| freeze | antifreeze | +| dote | antidote | +| hero | antihero | + +
+ +
diff --git a/registry/wrangles/format/price-breaks.md b/registry/wrangles/format/price-breaks.md new file mode 100644 index 0000000..3ca2e39 --- /dev/null +++ b/registry/wrangles/format/price-breaks.md @@ -0,0 +1,63 @@ +--- +schema_version: '0.1' +type: wrangle +id: null +wrangle_name: price_breaks +namespace: format +title: Format Price Breaks +description: Expand non-empty price-break cells into paired category and value columns. +wrangle_key: format.price_breaks +aliases: [] +slug: format/price-breaks +status: active +visibility: public +tags: + - format + - price-breaks +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.format.price_breaks + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name, index, or list of input columns. + required: true + role: column-selector + schema: + type: array + - name: categoryLabel + description: Prefix for output columns that identify the source price-break category. + required: true + role: option + schema: + type: string + - name: valueLabel + description: Prefix for output columns that contain the corresponding price-break value. + required: true + role: option + schema: + type: string +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py + title: WranglesPY format.price_breaks implementation +--- + +# Format Price Breaks + +## Behavior + +Expand non-empty price-break cells into paired category and value columns. + +This first-pass guidance is derived from the callable signature. diff --git a/registry/wrangles/format/remove-duplicates.md b/registry/wrangles/format/remove-duplicates.md new file mode 100644 index 0000000..2729093 --- /dev/null +++ b/registry/wrangles/format/remove-duplicates.md @@ -0,0 +1,110 @@ +--- +schema_version: '0.1' +type: wrangle +id: 283b9e78-b2b2-43d0-844f-9842c33120aa +wrangle_name: remove_duplicates +namespace: format +title: Remove Duplicates +description: Remove duplicates from a list. Preserves input order. +wrangle_key: format.remove_duplicates +aliases: [] +slug: format/remove-duplicates +status: active +visibility: public +tags: + - format + - remove-duplicates +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.format.remove_duplicates + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output column. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: ignore_case + description: Ignore case when removing duplicates. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py + title: WranglesPY format.remove_duplicates implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/remove-duplicates.md + title: Existing format.remove_duplicates Markdown +--- + +# Remove Duplicates + +Remove duplicate values in a list. + +## Migrated examples +#### Removing Duplicates From a List + +##### Recipe + +```yaml +wrangles: + - format.remove_duplicates: + input: Attack of the Clones + output: Commander + where: Rank = Commander +``` + +
+ +
+ +##### Input Sample + +| Rank | Attack of the Clones | +| --- | --- | +| Commander | ['Cody', 'Cody', 'Cody'] | +| Captain | ['Rex', 'Rex', 'Rex'] | + +
+ +
+ +##### Output Sample + +| Rank | Commander | Attack of the Clones | +| --- | --- | --- | +| Commander | ['Cody'] | ['Cody', 'Cody', 'Cody'] | +| Captain | | ['Rex', 'Rex', 'Rex'] | + +
+ +
diff --git a/registry/wrangles/format/significant-figures.md b/registry/wrangles/format/significant-figures.md new file mode 100644 index 0000000..aead2ba --- /dev/null +++ b/registry/wrangles/format/significant-figures.md @@ -0,0 +1,112 @@ +--- +schema_version: '0.1' +type: wrangle +id: a359f72a-5250-4dd8-84f6-8a8173bee0f6 +wrangle_name: significant_figures +namespace: format +title: Significant Figures +description: Format a value to a specific number of significant figures. +wrangle_key: format.significant_figures +aliases: [] +slug: format/significant-figures +status: active +visibility: public +tags: + - format + - significant-figures +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.format.significant_figures + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: significant_figures + description: Number of significant figures to format to. Default is 3. + required: false + role: option + runtime_default: 3 + schema: + type: integer + - name: output + description: Name of the output column. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py + title: WranglesPY format.significant_figures implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/significant-figures.md + title: Existing format.significant_figures Markdown +--- + +# Significant Figures + +Format a value to a specific number of significant figures + +## Migrated examples +#### Rounding to Significant Figures + +##### Recipe + +```yaml +wrangles: + - format.significant_figures: + input: Data + significant_figures: 2 + output: Data to 2 Figures +``` + +
+ +
+ +##### Input Sample + +| Data | +| --- | +| 1.25 | +| 12.3 | +| 55.6 | + +
+ +
+ +##### Output Sample + +| Data | Data to 2 Figures | +| --- | --- | +| 1.25 | 1.2 | +| 12.3 | 12 | +| 55.6 | 55 | + +
+ +
diff --git a/registry/wrangles/format/suffix.md b/registry/wrangles/format/suffix.md new file mode 100644 index 0000000..2134406 --- /dev/null +++ b/registry/wrangles/format/suffix.md @@ -0,0 +1,121 @@ +--- +schema_version: '0.1' +type: wrangle +id: 8d127060-ba2d-4934-897f-07662e01e40b +wrangle_name: suffix +namespace: format +title: Suffix +description: Add a suffix to a column. +wrangle_key: format.suffix +aliases: [] +slug: format/suffix +status: active +visibility: public +tags: + - format + - suffix +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.format.suffix + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: value + description: Suffix value to add. + required: true + role: option + schema: + type: + - string + - integer + - number + - array + - name: output + description: (Optional) Name of the output column. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - 'null' + - name: skip_empty + description: Whether to skip empty values. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py + title: WranglesPY format.suffix implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/suffix.md + title: Existing format.suffix Markdown +--- + +# Suffix + +Add a suffix to a column + +## Migrated examples +#### Adding a Suffix to a String + +##### Recipe + +```yaml +wrangles: + - format.suffix: + input: Data + output: Suffix + value: ic +``` + +
+ +
+ +##### Input Sample + +| Data | +| --- | +| sto | +| hero | +| icon | + +
+ +
+ +##### Output Sample + +| Data | Suffix | +| --- | --- | +| sto | stoic | +| hero | heroic | +| icon | iconic | + +
+ +
diff --git a/registry/wrangles/format/trim.md b/registry/wrangles/format/trim.md new file mode 100644 index 0000000..fcc36bc --- /dev/null +++ b/registry/wrangles/format/trim.md @@ -0,0 +1,105 @@ +--- +schema_version: '0.1' +type: wrangle +id: af16b3c1-c230-4868-8ebe-f574904a0c76 +wrangle_name: trim +namespace: format +title: Trim +description: Remove excess whitespace at the start and end of text. +wrangle_key: format.trim +aliases: [] +slug: format/trim +status: active +visibility: public +tags: + - format + - trim +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.format.trim + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output column. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py + title: WranglesPY format.trim implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/trim.md + title: Existing format.trim Markdown +--- + +# Trim + +Remove excess whitespace at the start and end of text. Can accept multiple columns. + +:::note +Non-string values pass through unaltered. +::: + +## Migrated examples +#### Trimming a String + +##### Recipe + +```yaml +wrangles: + - format.trim: + input: + - col1 + output: col1 trimmed +``` + +
+ +
+ +##### Input Sample + +| col1 | +| --- | +| ` Hello World ` | + +
+ +
+ +##### Output Sample + +| col1 | col1 trimmed | +| --- | --- | +| Hello World | Hello World | + +
+ +
diff --git a/registry/wrangles/generate/ai.md b/registry/wrangles/generate/ai.md new file mode 100644 index 0000000..9690616 --- /dev/null +++ b/registry/wrangles/generate/ai.md @@ -0,0 +1,199 @@ +--- +schema_version: '0.1' +type: wrangle +id: 12c31c6c-cade-484d-84ba-7f302bf6af52 +wrangle_name: ai +namespace: generate +title: Ai +description: Generate structured AI output for each recipe row. +wrangle_key: generate.ai +aliases: [] +slug: generate/ai +status: active +visibility: public +tags: + - ai + - generate +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.generate.ai + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: api_key + description: OpenAI-compatible API key. + required: true + role: credential + schema: + type: string + - name: output + description: Target schema; string/array shorthands are expanded automatically. + required: true + role: column-output + schema: + type: + - string + - array + - object + - name: input + description: Column(s) to concatenate into the prompt (defaults to all columns). + required: false + role: column-selector + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: model + description: Responses model name (e.g. gpt-5-mini). + required: false + role: option + runtime_default: gpt-5 + schema: + type: string + - name: threads + description: Maximum concurrent requests (default 20). + required: false + role: option + runtime_default: 20 + schema: + type: integer + - name: timeout + description: Per-request timeout in seconds. + required: false + role: option + runtime_default: 90 + schema: + type: integer + - name: retries + description: Number of retry attempts on failure. + required: false + role: option + runtime_default: 0 + schema: + type: integer + - name: messages + description: Optional extra messages forwarded to the inner generate helper. + required: false + role: option + runtime_default: null + schema: + type: + - array + - object + - 'null' + - name: url + description: Override for the OpenAI-compatible endpoint. + required: false + role: option + runtime_default: https://api.openai.com/v1/responses + schema: + type: string + - name: strict + description: Enforce JSON-schema validation on the response. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: web_search + description: Enable DuckDuckGo context lookup per row. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: reasoning + description: Responses API reasoning options (forwarded verbatim). + required: false + role: option + runtime_default: + effort: low + schema: + type: + - string + - object + - name: previous_response + description: Chain responses by reusing previous_response_id for field-by-field calls. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: summary + description: Request summary text to be merged into the output. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/generate.py + title: WranglesPY generate.ai implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/ai/_sources/ai.md + title: Existing generate.ai Markdown +--- + +# Ai + +Generate structured AI output for each recipe row. + +## Migrated examples +#### Generate Structured Product Data + +This template generates a category from a product description. AI-generated values can vary by model and request. + +##### Recipe + +```yaml +wrangles: + - generate.ai: + input: + - Product Description + output: + Category: + type: string + description: Broad product category + api_key: Your OpenAI-compatible API key + model: gpt-5-mini +``` + +
+ +
+ +##### Input Sample + +| Product Description | +| --- | +| Stainless steel insulated water bottle, 750 ml | + +
+ +
+ +##### Output Sample + +| Product Description | Category | +| --- | --- | +| Stainless steel insulated water bottle, 750 ml | Drinkware | + +
+ +
+ +_Template based on the documented parameters; no published source example is currently available._ diff --git a/registry/wrangles/merge/coalesce.md b/registry/wrangles/merge/coalesce.md new file mode 100644 index 0000000..5178b47 --- /dev/null +++ b/registry/wrangles/merge/coalesce.md @@ -0,0 +1,104 @@ +--- +schema_version: '0.1' +type: wrangle +id: 25c1a60d-fa48-4b9a-8c03-0921d5b31049 +wrangle_name: coalesce +namespace: merge +title: Coalesce +description: Take the first non-empty value from a series of columns or lists. +wrangle_key: merge.coalesce +aliases: [] +slug: merge/coalesce +status: active +visibility: public +tags: + - merge + - coalesce +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.merge.coalesce + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: List of input columns or a single column containing lists. + required: true + role: column-selector + schema: + type: array + - name: output + description: Name of the output columns. This is required if multiple input columns are provided. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/merge.py + title: WranglesPY merge.coalesce implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/merge/_sources/coalesce.md + title: Existing merge.coalesce Markdown +--- + +# Coalesce + +Take the first non-empty value from a series of columns. + +## Migrated examples +#### Coalescing 3 Columns + +##### Recipe + +```yaml +wrangles: + - merge.coalesce: + input: + - Col1 + - Col2 + - Col3 + output: Output Col + where: Col2 = E +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | Col3 | +| --- | --- | --- | +| A | B | C | +| D | E | F | +| G | H | I | + +
+ +
+ +##### Output Sample + +| Col1 | Col2 | Col3 | Output Col | +| --- | --- | --- | --- | +| A | B | C | | +| D | E | F | D | +| G | H | I | | + +
+ +
diff --git a/registry/wrangles/merge/concatenate.md b/registry/wrangles/merge/concatenate.md new file mode 100644 index 0000000..fa69003 --- /dev/null +++ b/registry/wrangles/merge/concatenate.md @@ -0,0 +1,153 @@ +--- +schema_version: '0.1' +type: wrangle +id: 6ff76728-e1f6-4d3d-8946-6aa3b7524b3f +wrangle_name: concatenate +namespace: merge +title: Concatenate +description: Concatenate a list of columns or a list within a single column. +wrangle_key: merge.concatenate +aliases: [] +slug: merge/concatenate +status: active +visibility: public +tags: + - merge + - concatenate +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.merge.concatenate + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Either a single column name or list of columns. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output column. + required: true + role: column-output + schema: + type: string + - name: char + description: (Optional) Character to add between successive values. + required: false + role: option + runtime_default: ',' + schema: + type: string + - name: skip_empty + description: Whether to skip empty values, defaults to false. + required: false + role: option + runtime_default: false + schema: + type: boolean + desription: Whether to skip empty values +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/merge.py + title: WranglesPY merge.concatenate implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/merge/_sources/concatenate.md + title: Existing merge.concatenate Markdown +--- + +# Concatenate + +If the input is a list of columns, concatenate multiple columns into one as a delimited string. If the input is a single column, concatenate a list within that column into a delimited string. + +## Migrated examples +#### Concatenating 3 Columns + +##### Recipe + +```yaml +# Using concatenate to combine multiple columns +wrangles: + - merge.concatenate: + input: + - Col1 + - Col2 + - Col3 + output: Join Col + char: ', ' +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | Col3 | +| --- | --- | --- | +| A | B | C | + +
+ +
+ +##### Output Sample + +| Join Col | +| --- | +| A, B, C | + +
+ +
+ +#### Concatenating a Single Column + +##### Recipe + +```yaml +# Using concatenate to join a column that is a list +wrangles: + - merge.concatenate: + input: Col1 + output: Join List + char: ' ' +``` + +
+ +
+ +##### Input Sample + +| Col1 | +| --- | +| ['A', 'B', 'C'] | + +
+ +
+ +##### Output Sample + +| Join List | +| --- | +| A B C | + +
+ +
diff --git a/registry/wrangles/merge/dictionaries.md b/registry/wrangles/merge/dictionaries.md new file mode 100644 index 0000000..97e424f --- /dev/null +++ b/registry/wrangles/merge/dictionaries.md @@ -0,0 +1,182 @@ +--- +schema_version: '0.1' +type: wrangle +id: 93e27737-e966-4ba9-8777-4e96724ebfc4 +wrangle_name: dictionaries +namespace: merge +title: Dictionaries +description: Take dictionaries in multiple columns and merge them to a single dictionary. +wrangle_key: merge.dictionaries +aliases: [] +slug: merge/dictionaries +status: active +visibility: public +tags: + - merge + - dictionaries +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.merge.dictionaries + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: List of input columns. + required: true + role: column-selector + schema: + type: array + - name: output + description: Name of the output column. + required: true + role: column-output + schema: + type: string + - name: skip_empty + description: Whether to skip empty dictionaries when merging. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/merge.py + title: WranglesPY merge.dictionaries implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/merge/_sources/dictionaries.md + title: Existing merge.dictionaries Markdown +--- + +# Dictionaries + +Take dictionaries in multiple columns and merge them to a single dictionary. + +:::note +For duplicate keys, the last key in the input list takes precedence in the merged dictionary. +::: + +## Migrated examples +#### Using Named Columns + +##### Recipe + +```yaml +wrangles: + - merge.dictionaries: + input: + - Dict 1 + - Dict 2 + output: Merged +``` + +
+ +
+ +##### Input Sample + +| Dict 1 | Dict 2 | +| --- | --- | +| \{'First': 'One'\} | \{'Second': 'Two'\} | + +
+ +
+ +##### Output Sample + +| Merged | +| --- | +| \{'First': 'One', 'Second': 'Two'\} | + +
+ +
+ +#### Using a Wildcard (*) + +##### Recipe + +```yaml +# Using a Wildcard (*) +wrangles: + - merge.dictionaries: + input: Dict * + output: Merged +``` + +
+ +
+ +##### Input Sample + +| Dict 1 | Dict 2 | +| --- | --- | +| \{'First': 'One'\} | \{'Second': 'Two'\} | + +
+ +
+ +##### Output Sample + +| Merged | +| --- | +| \{'First': 'One', 'Second': 'Two'\} | + +
+ +
+ +#### Using a Wildcard (*) With Not Columns + +##### Recipe + +```yaml +# Using a Wildcard (*) +wrangles: + - merge.dictionaries: + input: + - Dict * + - -Dict 2 + output: Merged +``` + +Note the extra dash in front of `Dict 2` excludes that column from the wildcard selection. + +
+ +
+ +##### Input Sample + +| Dict 1 | Dict 2 | Dict 3 | +| --- | --- | --- | +| \{'First': 'One'\} | \{'Second': 'Two'\} | \{'Third': 'Three'\} | + +
+ +
+ +##### Output Sample + +| Merged | +| --- | +| \{'First': 'One', 'Third': 'Three'\} | + +
+ +
diff --git a/registry/wrangles/merge/key-value-pairs.md b/registry/wrangles/merge/key-value-pairs.md new file mode 100644 index 0000000..167aa94 --- /dev/null +++ b/registry/wrangles/merge/key-value-pairs.md @@ -0,0 +1,148 @@ +--- +schema_version: '0.1' +type: wrangle +id: 8a2cd37c-8ef7-4b05-8264-36512f5dd837 +wrangle_name: key_value_pairs +namespace: merge +title: Key Value Pairs +description: >- + Create a dictionary from keys and values in paired columns e.g. COLUMN_NAME_1, COLUMN_VALUE_1, + COLUMN_NAME_2, COLUMN_VALUE_2 ... +wrangle_key: merge.key_value_pairs +aliases: [] +slug: merge/key-value-pairs +status: active +visibility: public +tags: + - merge + - key-value-pairs +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.merge.key_value_pairs + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Matched pairs of key and value columns. + required: true + role: column-selector + schema: + type: object + - name: output + description: Name of the output column. + required: true + role: column-output + schema: + type: string + - name: skip_empty + description: Whether to skip empty keys or values when creating the dictionary. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/merge.py + title: WranglesPY merge.key_value_pairs implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/merge/_sources/key-value-pairs.md + title: Existing merge.key_value_pairs Markdown +--- + +# Key Value Pairs + +Create a dictionary from keys and values in paired columns. + +## Migrated examples +#### Using Named Columns + +##### Recipe + +```yaml +wrangles: + - merge.key_value_pairs: + input: + Letter: Number + output: Pairs +``` + +
+ +
+ +##### Input Sample + +| Letter | Number | +| --- | --- | +| A | 1 | +| B | 2 | +| C | 3 | + +
+ +
+ +##### Output Sample + +| Pairs | +| --- | +| \{'A': 1\} | +| \{'B': 2\} | +| \{'C': 3\} | + +
+ +
+ +#### Using a wildcard (*) + +##### Recipe + +```yaml +# Using a Wildcard (*) +wrangles: + - merge.key_value_pairs: + input: + key*: value* + output: Object +``` + +
+ +
+ +##### Input Sample + +| key 1 | key 2 | value 1 | value 2 | +| --- | --- | --- | --- | +| A | One | a | First | +| B | Two | b | Second | +| C | three | c | Third | + +
+ +
+ +##### Output Sample + +| Object | +| --- | +| \{'A': 'a', 'One': 'First'\} | +| \{'B': 'b', 'Two': 'Second'\} | +| \{'C': 'c', 'three': 'Third'\} | + +
+ +
diff --git a/registry/wrangles/merge/lists.md b/registry/wrangles/merge/lists.md new file mode 100644 index 0000000..b20fbaf --- /dev/null +++ b/registry/wrangles/merge/lists.md @@ -0,0 +1,117 @@ +--- +schema_version: '0.1' +type: wrangle +id: d9978f00-b3d4-4583-884e-a53b98a43e9a +wrangle_name: lists +namespace: merge +title: Lists +description: Take lists in multiple columns and merge them to a single list. +wrangle_key: merge.lists +aliases: [] +slug: merge/lists +status: active +visibility: public +tags: + - merge + - lists +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.merge.lists + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: List of input columns. + required: true + role: column-selector + schema: + type: array + - name: output + description: Name of the output column. + required: true + role: column-output + schema: + type: string + - name: remove_duplicates + description: Whether to remove duplicates from the created list. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: ignore_case + description: Ignore case when removing duplicates. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: include_empty + description: Whether to include empty values in the created list. + required: false + role: option + runtime_default: true + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/merge.py + title: WranglesPY merge.lists implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/merge/_sources/lists.md + title: Existing merge.lists Markdown +--- + +# Lists + +Take lists in multiple columns and merge them to a single list. + +## Migrated examples +#### Merging Two Lists + +##### Recipe + +```yaml +wrangles: + - merge.lists: + input: + - col1 + - col2 + output: Combined Col + remove_duplicates: false +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | +| --- | --- | +| ['A', 'B'] | ['D', 'E'] | + +
+ +
+ +##### Output Sample + +| Combined Col | +| --- | +| ['A', 'B', 'D', 'E'] | + +
+ +
diff --git a/registry/wrangles/merge/to-dict.md b/registry/wrangles/merge/to-dict.md new file mode 100644 index 0000000..509779b --- /dev/null +++ b/registry/wrangles/merge/to-dict.md @@ -0,0 +1,104 @@ +--- +schema_version: '0.1' +type: wrangle +id: 9b869210-0d89-403b-8409-7cecdb5f9c7c +wrangle_name: to_dict +namespace: merge +title: To Dict +description: >- + Take multiple columns and merge them to a dictionary (aka object) using the column headers as + keys. +wrangle_key: merge.to_dict +aliases: [] +slug: merge/to-dict +status: active +visibility: public +tags: + - merge + - to-dict +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.merge.to_dict + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: List of input columns. + required: true + role: column-selector + schema: + type: array + - name: output + description: Name of the output column. + required: true + role: column-output + schema: + type: string + - name: include_empty + description: Whether to include empty columns in the created dictionary. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/merge.py + title: WranglesPY merge.to_dict implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/merge/_sources/to-dict.md + title: Existing merge.to_dict Markdown +--- + +# To Dict + +Take multiple columns and merge them to a dictionary (aka object) using the column headers as keys. + +## Migrated examples +#### Merging Two Columns Into a Dictionary + +##### Recipe + +```yaml +wrangles: + - merge.to_dict: + input: + - Col1 + - Col2 + output: Dict Col +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | +| --- | --- | +| A | B | + +
+ +
+ +##### Output Sample + +| Dict Col | +| --- | +| \{'Col1': 'A', 'Col2': 'B'\} | + +
+ +
diff --git a/registry/wrangles/merge/to-list.md b/registry/wrangles/merge/to-list.md new file mode 100644 index 0000000..62ebd22 --- /dev/null +++ b/registry/wrangles/merge/to-list.md @@ -0,0 +1,103 @@ +--- +schema_version: '0.1' +type: wrangle +id: d5300fe7-c8a4-4a41-8f12-f2c1698678cc +wrangle_name: to_list +namespace: merge +title: To List +description: Take multiple columns and merge them to a list. +wrangle_key: merge.to_list +aliases: [] +slug: merge/to-list +status: active +visibility: public +tags: + - merge + - to-list +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.merge.to_list + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: List of input columns. + required: true + role: column-selector + schema: + type: array + - name: output + description: Name of the output column. + required: true + role: column-output + schema: + type: string + - name: include_empty + description: Whether to include empty columns in the created list. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/merge.py + title: WranglesPY merge.to_list implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/merge/_sources/to-list.md + title: Existing merge.to_list Markdown +--- + +# To List + +Take multiple columns and merge them to a list. + +## Migrated examples +#### Merging Multiple Columns to a Single List + +##### Recipe + +```yaml +wrangles: + - merge.to_list: + input: + - Col1 + - Col2 + - Col3 + output: List Col +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | Col3 | +| --- | --- | --- | +| A | B | C | + +
+ +
+ +##### Output Sample + +| List Col | +| --- | +| ['A', 'B', 'C'] | + +
+ +
diff --git a/registry/wrangles/search/find-links.md b/registry/wrangles/search/find-links.md new file mode 100644 index 0000000..2cde605 --- /dev/null +++ b/registry/wrangles/search/find-links.md @@ -0,0 +1,181 @@ +--- +schema_version: '0.1' +type: wrangle +id: ec1f661b-2cbc-4a47-88e3-646179104376 +wrangle_name: find_links +namespace: search +title: Find Links +description: >- + Perform web searches to find links. Returns structured search results with titles, links, + snippets, and optional pricing. +wrangle_key: search.find_links +aliases: [] +slug: search/find-links +status: active +visibility: public +tags: + - search + - find-links +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.search.find_links + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: queries + description: Name or list of input columns containing search queries. + required: true + role: option + schema: + type: + - string + - array + - name: id + description: Name of the column containing the row ID to append to each search result. + required: true + role: option + schema: + type: string + - name: output + description: >- + Output column for the dictionaries. If a list of 2 is provided, outputs [dicts_column, + pretty_strings_column]. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: client + description: The search provider to use. + required: false + role: option + runtime_default: serpapi + schema: + type: string + enum: + - serpapi + - name: api_key + description: >- + API key for the search client. Can also be set as an environment variable (e.g., + SERPAPI_API_KEY). + required: false + role: credential + runtime_default: null + schema: + type: + - string + - 'null' + - name: n_results + description: Number of search results to return per query (default 10, max 100). + required: false + role: option + runtime_default: 10 + schema: + type: integer + - name: threads + description: Number of concurrent threads for parallel processing (default 10). + required: false + role: option + runtime_default: 10 + schema: + type: integer + - name: country + description: 'Country code for search results (default ''us''). Alias: gl.' + required: false + role: option + schema: + type: string + - name: language + description: 'Language code for search results (default ''en''). Alias: hl.' + required: false + role: option + schema: + type: string + - name: location + description: Location for search results (e.g., 'Austin, Texas'). + required: false + role: option + schema: + type: string + - name: device + description: Device type for search results. + required: false + role: option + schema: + type: string + enum: + - desktop + - mobile + - tablet +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/search.py + title: WranglesPY search.find_links implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/search/_sources/find-links.md + title: Existing search.find_links Markdown +--- + +# Find Links + +Perform web searches to find links. Returns structured search results with titles, links, snippets, and optional pricing. + +## Migrated examples +#### Find Product Links + +This template searches once per query and returns structured result dictionaries. Search results vary by provider, location, and time. + +##### Recipe + +```yaml +wrangles: + - search.find_links: + id: Row ID + queries: + - Search Query + output: + - Search Results + api_key: Your SerpApi API key + client: serpapi + n_results: 5 +``` + +
+ +
+ +##### Input Sample + +| Row ID | Search Query | +| --- | --- | +| 1001 | SKF 6202 bearing supplier | + +
+ +
+ +##### Output Sample + +| Row ID | Search Query | Search Results | +| --- | --- | --- | +| 1001 | SKF 6202 bearing supplier | `[{"title": "Example result", "link": "https://example.com/6202", "snippet": "SKF 6202 bearing"}]` | + +
+ +
+ +_Template based on the documented parameters; no published source example is currently available._ diff --git a/registry/wrangles/search/retrieve-link-content.md b/registry/wrangles/search/retrieve-link-content.md new file mode 100644 index 0000000..c83f25c --- /dev/null +++ b/registry/wrangles/search/retrieve-link-content.md @@ -0,0 +1,164 @@ +--- +schema_version: '0.1' +type: wrangle +id: 3d5faa87-9e96-48c0-8226-5ae566e8d76c +wrangle_name: retrieve_link_content +namespace: search +title: Retrieve Link Content +description: >- + Retrieves targeted content from web pages using LLM URL extraction. Can optionally output a second + column containing a clean, human-readable text summary of the retrieved data. +wrangle_key: search.retrieve_link_content +aliases: [] +slug: search/retrieve-link-content +status: active +visibility: public +tags: + - search + - retrieve-link-content +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.search.retrieve_link_content + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name or list of input columns containing URLs or Scored Search Result dictionaries. + required: true + role: column-selector + schema: + type: + - string + - array + - name: output + description: >- + Name of the output column for the raw dictionaries. To output BOTH the raw dictionaries and + the formatted text, provide a list of exactly two column names (e.g., [page_data, page_text]). + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: client + description: The retrieval provider to use. + required: false + role: option + runtime_default: google_url_context + schema: + type: string + enum: + - google_url_context + - name: api_key + description: API key for the provider. Can also be set as an environment variable (e.g., GOOGLE_API_KEY). + required: false + role: credential + runtime_default: null + schema: + type: + - string + - 'null' + - name: prompt + description: Optional custom system prompt to guide the extraction behavior and output format. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + - name: model_id + description: The specific model ID to use (default models/gemini-3-flash-preview). + required: false + role: model-reference + runtime_default: models/gemini-3-flash-preview + schema: + type: string + - name: output_format + description: The desired format for the extracted content. + required: false + role: column-output + runtime_default: json + schema: + type: string + enum: + - markdown + - json + - name: threads + description: Number of concurrent threads for parallel processing (default 10). + required: false + role: option + runtime_default: 10 + schema: + type: integer +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/search.py + title: WranglesPY search.retrieve_link_content implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/search/_sources/retrieve-link-content.md + title: Existing search.retrieve_link_content Markdown +--- + +# Retrieve Link Content + +Retrieves targeted content from web pages using LLM URL extraction. Can optionally output a second column containing a clean, human-readable text summary of the retrieved data. + +## Migrated examples +#### Retrieve Structured Page Content + +This template extracts JSON content from a URL. Returned fields depend on the page, prompt, and retrieval model. + +##### Recipe + +```yaml +wrangles: + - search.retrieve_link_content: + input: + - Product URL + output: + - Page Data + api_key: Your Google API key + client: google_url_context + output_format: json + prompt: Extract the product title and manufacturer. +``` + +
+ +
+ +##### Input Sample + +| Product URL | +| --- | +| https://example.com/products/6202 | + +
+ +
+ +##### Output Sample + +| Product URL | Page Data | +| --- | --- | +| https://example.com/products/6202 | `{"title": "6202 Bearing", "manufacturer": "SKF"}` | + +
+ +
+ +_Template based on the documented parameters; no published source example is currently available._ diff --git a/registry/wrangles/select/columns.md b/registry/wrangles/select/columns.md new file mode 100644 index 0000000..eaaa709 --- /dev/null +++ b/registry/wrangles/select/columns.md @@ -0,0 +1,91 @@ +--- +schema_version: '0.1' +type: wrangle +id: bca12c60-3957-4dc5-83f7-5ee460df2a11 +wrangle_name: columns +namespace: select +title: Columns +description: Select columns from the dataframe. +wrangle_key: select.columns +aliases: [] +slug: select/columns +status: active +visibility: public +tags: + - select + - columns +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.select.columns + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the column(s) to select. + required: true + role: column-selector + schema: + type: + - string + - integer + - array +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py + title: WranglesPY select.columns implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/columns.md + title: Existing select.columns Markdown +--- + +# Columns + +Select columns from the dataframe + +## Migrated examples +#### Selecting Columns + +##### Recipe + +```yaml +wrangles: + - select.columns: + input: Manufacturer +``` + +
+ +
+ +##### Input Sample + +| Part Number | Manufacturer | +| --- | --- | +| 1234 | SKF | +| 5678 | Timken | + +
+ +
+ +##### Output Sample + +| Manufacturer | +| --- | +| SKF | +| Timken | + +
+ +
diff --git a/registry/wrangles/select/dictionary-element.md b/registry/wrangles/select/dictionary-element.md new file mode 100644 index 0000000..577ffe5 --- /dev/null +++ b/registry/wrangles/select/dictionary-element.md @@ -0,0 +1,322 @@ +--- +schema_version: '0.1' +type: wrangle +id: 5adaeada-6da8-464f-84cb-9fb5ecc17e48 +wrangle_name: dictionary_element +namespace: select +title: Dictionary Element +description: Select one or more element of a dictionary. +wrangle_key: select.dictionary_element +aliases: [] +slug: select/dictionary-element +status: active +visibility: public +tags: + - select + - dictionary-element +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.select.dictionary_element + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: element + description: >- + The key or keys from the dictionary to select. If a single key is provided, the value will be + returned If a lists of keys are selected, the result will be a new dictionary. + required: true + role: option + schema: + type: string + - name: output + description: Name of the output column. If omitted, the input column will be replaced. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: default + description: >- + Set the default value to return if the specified element doesn't exist. If selecting multiple + elements, a dict of defaults can be set. + required: false + role: fallback-value + runtime_default: '' + schema: + type: + - string + - number + - array + - object + - boolean + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py + title: WranglesPY select.dictionary_element implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/dictionary-element.md + title: Existing select.dictionary_element Markdown +--- + +# Dictionary Element + +Select one or more element of a dictionary. + +## Migrated examples +#### Selecting Dictionary Element Using Where + +##### Recipe + +```yaml +wrangles: + - select.dictionary_element: + input: Properties + output: Shapes + element: shapes + default: square + where: Part Number = 1234 +``` + +
+ +
+ +##### Input Sample + +| Properties | Part Number | +| --- | --- | +| \{'colours': ['red', 'white', 'blue'], 'shapes': 'round', 'materials': 'tungsten'\} | 1234 | +| \{'colours': ['green', 'yellow', 'orange'], 'shapes': 'square', 'materials': 'tungsten'\} | 5678 | + +
+ +
+ +##### Output Sample + +| Shapes | +| --- | +| round | +| | + +
+ +
+ +#### Selecting Multiple Dictionary Elements + +##### Recipe + +```yaml +wrangles: + - select.dictionary_element: + input: Properties + element: + - shapes + - materials +``` + +
+ +
+ +##### Input Sample + +| Properties | +| --- | +| \{'colours': ['red', 'white', 'blue'], 'shapes': 'round', 'materials': 'tungsten'\} | +| \{'colours': ['green', 'yellow', 'orange'], 'shapes': 'square', 'materials': 'tungsten'\} | + +
+ +
+ +##### Output Sample + +| Properties | +| --- | +| \{'shapes': 'round', 'materials': 'tungsten'\} | +| \{'shapes': 'square', 'materials': 'tungsten'\} | + +
+ +
+ +#### Selecting Multiple Dictionary Elements Using a Wildcard + +##### Recipe + +```yaml +wrangles: + - select.dictionary_element: + input: Properties + output: Output Dict + element: + - Col* +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| \{'Col1': 'A', 'Col2': 'B', 'Other3': 'C'\} | + +
+ +
+ +##### Output Sample + +| Column | Output Dict | +| --- | --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | \{'Col1': 'A', 'Col2': 'B'\} | + +
+ +
+ +#### Selecting Multiple Dictionary Elements Using Regex + +##### Recipe + +```yaml +wrangles: + - select.dictionary_element: + input: Properties + output: Output Dict + element: + - "regex: .*2" +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | + +
+ +
+ +##### Output Sample + +| Column | Output Dict | +| --- | --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | \{'Col2': 'B'\} | + +
+ +
+ +#### Selecting Elements While Renaming + +##### Recipe + +```yaml +wrangles: + - select.dictionary_element: + input: Properties + output: Output Dict + element: + - Col1: Column 1 + - Col2: Column 2 +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | + +
+ +
+ +##### Output Sample + +| Column | Output Dict | +| --- | --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | \{'Column 1': 'A', 'Column 2': 'B'\} | + +
+ +
+ +#### Using Default to Fill Missing Elements + +##### Recipe + +```yaml +wrangles: + - select.dictionary_element: + input: Properties + output: Output Dict + element: + - Col1 + - Col3 + default: + Col1: Z + Col3: Y +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | +| \{'Col1': 'D', 'Col2': 'E'\} | + +
+ +
+ +##### Output Sample + +| Column | Output Dict | +| --- | --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | \{'Col1': 'A', 'Col3': 'C'\} | +| \{'Col1': 'D', 'Col2': 'E'\} | \{'Col1': 'D', 'Col3': 'Y'\} | + +
+ +
diff --git a/registry/wrangles/select/element.md b/registry/wrangles/select/element.md new file mode 100644 index 0000000..9cc5232 --- /dev/null +++ b/registry/wrangles/select/element.md @@ -0,0 +1,117 @@ +--- +schema_version: '0.1' +type: wrangle +id: 223d2f4e-3247-4189-8b6c-e73fe44c4266 +wrangle_name: element +namespace: select +title: Element +description: Select elements of lists or dicts using python syntax like col[0]['key']. +wrangle_key: select.element +aliases: [] +slug: select/element +status: active +visibility: public +tags: + - select + - element +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.select.element + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: >- + Name of the input column and sub elements This permits by index for lists or dict and by key + for dicts e.g. col[0]['key'] // [{"key":"val"}] -> "val". + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output column(s). + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: default + description: Set the default value to return if the specified element doesn't exist. + required: false + role: fallback-value + runtime_default: null + schema: + type: + - string + - number + - array + - object + - boolean + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py + title: WranglesPY select.element implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/element.md + title: Existing select.element Markdown +--- + +# Element + +Select elements of lists or dictionaries using Python syntax like `col[1:3]['key']`. + +## Migrated examples +#### Selecting The First Element + +##### Recipe + +```yaml +wrangles: + - select.element: + input: Column A[0] + output: First Element +``` + +
+ +
+ +##### Input Sample + +| Column A | +| --- | +| [A, 0.9] | +| [B, 0.8] | + +
+ +
+ +##### Output Sample + +| Column A | First Element | +| --- | --- | +| [A, 0.9] | A | +| [B, 0.8] | B | + +
+ +
diff --git a/registry/wrangles/select/group-by.md b/registry/wrangles/select/group-by.md new file mode 100644 index 0000000..d1cbb50 --- /dev/null +++ b/registry/wrangles/select/group-by.md @@ -0,0 +1,277 @@ +--- +schema_version: '0.1' +type: wrangle +id: c0af10b1-423a-416c-8cb5-7e7fe1164964 +wrangle_name: group_by +namespace: select +title: Group By +description: Group and aggregate the data. +wrangle_key: select.group_by +aliases: [] +slug: select/group-by +status: active +visibility: public +tags: + - select + - group-by +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.select.group_by + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: by + description: List of the input columns to group on. + required: false + role: column-selector + runtime_default: [] + schema: + type: + - string + - array + - name: auto_rename_columns + description: >- + If true (default), aggregated column names include the operation as a suffix (e.g. Value.sum). + If false, column names are left as-is; use a dictionary entry to supply a custom output name + (e.g. - Value: Total). + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: list + description: Group and return all values for these column(s) as a list. + required: false + role: option + schema: + type: + - string + - array + - name: first + description: The first value for these column(s). + required: false + role: option + schema: + type: + - string + - array + - name: last + description: The last value for these column(s). + required: false + role: option + schema: + type: + - string + - array + - name: min + description: The minimum value for these column(s). + required: false + role: option + schema: + type: + - string + - array + - name: max + description: The maximum value for these column(s). + required: false + role: option + schema: + type: + - string + - array + - name: mean + description: The mean (average) value for these column(s). + required: false + role: option + schema: + type: + - string + - array + - name: median + description: The median value for these column(s). + required: false + role: option + schema: + type: + - string + - array + - name: nunique + description: The count of unique values for these column(s). + required: false + role: option + schema: + type: + - string + - array + - name: count + description: The count of values for these column(s). + required: false + role: option + schema: + type: + - string + - array + - name: counts + description: >- + Return a dictionary containing the count of each distinct value for these column(s). Keys are + converted to JSON-safe strings; missing values use the key "null" and booleans use lowercase + "true"/"false". + required: false + role: option + schema: + type: + - string + - array + - name: std + description: The standard deviation of values for these column(s). + required: false + role: option + schema: + type: + - string + - array + - name: sum + description: The total of values for these column(s). + required: false + role: option + schema: + type: + - string + - array + - name: any + description: Return true if any of the values for these column(s) are true. + required: false + role: option + schema: + type: + - string + - array + - name: all + description: Return true if all of the values for these column(s) are true. + required: false + role: option + schema: + type: + - string + - array + - name: p75 + description: Get a percentile. Note, you can use any integer here for the corresponding percentile. + required: false + role: option + schema: + type: + - string + - array + - name: custom.* + name_pattern: ^custom\.[A-Za-z_][A-Za-z0-9_]*$ + description: Placeholder for custom functions. Replace 'placeholder' with the name of the function. + required: false + role: option + schema: + type: + - string + - array +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py + title: WranglesPY select.group_by implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/group-by.md + title: Existing select.group_by Markdown +--- + +# Group By + +Group and aggregate the data + +## Migrated examples +#### Grouping By One Column + +##### Recipe + +```yaml +wrangles: + - select.group_by: + by: + - Product Type + sum: Quantity + mean: Price ($) +``` + +
+ +
+ +##### Input Sample + +| Product | Quantity | Price ($) | Product Type | +| --- | --- | --- | --- | +| Hammer | 3 | 12.99 | Hand Tools | +| Ratchet Wrench | 12 | 6.99 | Hand Tools | +| Cordless Drill | 2 | 49.99 | Power Tools | +| Reciprocating Saw | 7 | 29.99 | Power Tools | + +
+ +
+ +##### Output Sample + +| Product Type | Quantity.sum | Price ($).mean | +| --- | --- | --- | +| Hand Tools | 15 | 9.99 | +| Power Tools | 9 | 39.99 | + +
+ +
+ +#### Grouping With Custom Function Aggregation + +##### Recipe + +```yaml +wrangles: + - select.group_by: + by: Category + custom.sum_times_two: Quantity +``` + +
+ +
+ +##### Input Sample + +| Category | Quantity | +| --- | --- | +| Hand Tools | 3 | +| Hand Tools | 1 | +| Hand Tools | 2 | +| Power Tools | 4 | + +
+ +
+ +##### Output Sample + +| Category | Quantity.sum_times_two | +| --- | --- | +| Hand Tools | 12 | +| Power Tools | 4 | + +
+ +
diff --git a/registry/wrangles/select/head.md b/registry/wrangles/select/head.md new file mode 100644 index 0000000..7a1c41b --- /dev/null +++ b/registry/wrangles/select/head.md @@ -0,0 +1,90 @@ +--- +schema_version: '0.1' +type: wrangle +id: 237af1ec-db7d-415a-88b7-70586a2191fb +wrangle_name: head +namespace: select +title: Head +description: Return the first n rows. +wrangle_key: select.head +aliases: [] +slug: select/head +status: active +visibility: public +tags: + - select + - head +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.select.head + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: n + description: Number of rows to return. + required: true + role: option + schema: + type: integer +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py + title: WranglesPY select.head implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/head.md + title: Existing select.head Markdown +--- + +# Head + +Return the first n rows + +## Migrated examples +#### Selecting The First n Rows + +##### Recipe + +```yaml +wrangles: + - select.head: + n: 2 +``` + +
+ +
+ +##### Input Sample + +| Product | Manufacturer | +| --- | --- | +| Ball Bearing | SKF | +| Bearing Race | Timken | +| Needle Bearing | Acme Bearings | +| Roller Bearing | General Bearing Co. | + +
+ +
+ +##### Output Sample + +| Product | Manufacturer | +| --- | --- | +| Ball Bearing | SKF | +| Bearing Race | Timken | + +
+ +
diff --git a/registry/wrangles/select/highest-confidence.md b/registry/wrangles/select/highest-confidence.md new file mode 100644 index 0000000..57a8b0b --- /dev/null +++ b/registry/wrangles/select/highest-confidence.md @@ -0,0 +1,140 @@ +--- +schema_version: '0.1' +type: wrangle +id: 00aad85d-8cc8-42e5-86f3-e4ff916e8ac2 +wrangle_name: highest_confidence +namespace: select +title: Highest Confidence +description: >- + Select the option with the highest confidence from multiple columns. Inputs are expected to be of + the form [<>, <>]. +wrangle_key: select.highest_confidence +aliases: [] +slug: select/highest-confidence +status: active +visibility: public +tags: + - select + - highest-confidence +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.select.highest_confidence + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: List of the input columns to select from. + required: true + role: column-selector + schema: + type: array + - name: output + description: If two columns; the result and confidence. If one column; [result, confidence]. + required: true + role: column-output + schema: + type: + - string + - array +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py + title: WranglesPY select.highest_confidence implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/highest-confidence.md + title: Existing select.highest_confidence Markdown +--- + +# Highest Confidence + +Select the option with the highest confidence from multiple columns. Inputs are expected to be of the form `[value, confidence_score]`. + +## Migrated examples +#### Selecting Highest Confidence Single Output + +##### Recipe + +```yaml +wrangles: + - select.highest_confidence: + input: + - Col1 + - Col2 + - Col3 + output: Highest Confidence +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | Col3 | +| --- | --- | --- | +| ['A', 0.79] | ['B', 0.77] | ['C', 0.99] | + +
+ +
+ +##### Output Sample + +| Highest Confidence | +| --- | +| ['C', 0.99] | + +
+ +
+ +#### Selecting Highest Confidence Two Outputs + +##### Recipe + +```yaml +wrangles: + - select.highest_confidence: + input: + - Col1 + - Col2 + - Col3 + output: + - Item + - Confidence +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | Col3 | +| --- | --- | --- | +| ['A', 0.79] | ['B', 0.77] | ['C', 0.99] | + +
+ +
+ +##### Output Sample + +| Item | Confidence | +| --- | --- | +| C | 0.99 | + +
+ +
diff --git a/registry/wrangles/select/left.md b/registry/wrangles/select/left.md new file mode 100644 index 0000000..6b97981 --- /dev/null +++ b/registry/wrangles/select/left.md @@ -0,0 +1,111 @@ +--- +schema_version: '0.1' +type: wrangle +id: 5cdd9857-0c77-43bf-80d7-d0a8cb6f980b +wrangle_name: left +namespace: select +title: Left +description: >- + Return characters from the left of text. Strings shorter than the length defined will be + unaffected. +wrangle_key: select.left +aliases: [] +slug: select/left +status: active +visibility: public +tags: + - select + - left +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.select.left + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the column(s) to edit. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: length + description: >- + Number of characters to include from the left. If negative, this will remove the specified + number of characters from the left. May not equal 0. + required: true + role: option + schema: + type: integer + - name: output + description: Name of the output column(s). + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py + title: WranglesPY select.left implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/left.md + title: Existing select.left Markdown +--- + +# Left + +Select characters from the left of the input. Using a negative length reverses the side of selection, selecting from the right. + +## Migrated examples +#### Selecting Three Leftmost Elements + +##### Recipe + +```yaml +wrangles: + - select.left: + input: Column + output: Result + length: 3 +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| pudding | + +
+ +
+ +##### Output Sample + +| Result | +| --- | +| pud | + +
+ +
diff --git a/registry/wrangles/select/length.md b/registry/wrangles/select/length.md new file mode 100644 index 0000000..3bbbe19 --- /dev/null +++ b/registry/wrangles/select/length.md @@ -0,0 +1,102 @@ +--- +schema_version: '0.1' +type: wrangle +id: 4d7a5f66-0a4a-40e0-8298-d5c55754423d +wrangle_name: length +namespace: select +title: Length +description: >- + Calculate the lengths of data in a column. The length depends on the data type e.g. text will be + the length of the text, lists will be the number of elements in the list. +wrangle_key: select.length +aliases: [] +slug: select/length +status: active +visibility: public +tags: + - select + - length +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.select.length + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column(s). + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output column(s). + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py + title: WranglesPY select.length implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/length.md + title: Existing select.length Markdown +--- + +# Length + +Calculate the lengths of data in a column. The length depends on the data type e.g. text will be the length of the text, lists will be the number of elements in the list. + +## Migrated examples +#### Selecting the Length of Data Within a Column + +##### Recipe + +```yaml +wrangles: + - select.length: + input: Part Code + output: Part Code Length +``` + +
+ +
+ +##### Input Sample + +| Part Code | +| --- | +| 6202 | + +
+ +
+ +##### Output Sample + +| Part Code Length | +| --- | +| 4 | + +
+ +
diff --git a/registry/wrangles/select/list-element.md b/registry/wrangles/select/list-element.md new file mode 100644 index 0000000..be97b68 --- /dev/null +++ b/registry/wrangles/select/list-element.md @@ -0,0 +1,126 @@ +--- +schema_version: '0.1' +type: wrangle +id: ec40495d-d29a-4f62-86dd-eafa43cf388a +wrangle_name: list_element +namespace: select +title: List Element +description: Select a numbered element of a list (zero indexed). +wrangle_key: select.list_element +aliases: [] +slug: select/list-element +status: active +visibility: public +tags: + - select + - list-element +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.select.list_element + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output column. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: element + description: >- + The numbered element of the list to select. Starts from zero. This may use python slicing + syntax to select a subset of the list. + required: false + role: option + runtime_default: 0 + schema: + type: integer + - name: default + description: Set the default value to return if the specified element doesn't exist. + required: false + role: fallback-value + runtime_default: '' + schema: + type: + - string + - number + - array + - object + - boolean + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py + title: WranglesPY select.list_element implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/list-element.md + title: Existing select.list_element Markdown +--- + +# List Element + +Select a numbered element of a list (zero indexed). + +## Migrated examples +#### Selecting the Second Element in a List + +##### Recipe + +```yaml +wrangles: + - select.list_element: + input: Col1 + output: Second Element + element: 2 # Zero indexed + default: F +``` + +
+ +
+ +##### Input Sample + +| Col1 | +| --- | +| ['A', 'B', 'C'] | +| ['D', 'E'] | + +
+ +
+ +##### Output Sample + +| Third Element | +| --- | +| C | +| F | + +
+ +
diff --git a/registry/wrangles/select/right.md b/registry/wrangles/select/right.md new file mode 100644 index 0000000..c080b2c --- /dev/null +++ b/registry/wrangles/select/right.md @@ -0,0 +1,111 @@ +--- +schema_version: '0.1' +type: wrangle +id: 89ee82ec-3bc5-4bfa-899b-7a1260ef9bdb +wrangle_name: right +namespace: select +title: Right +description: >- + Return characters from the right of text. Strings shorter than the length defined will be + unaffected. +wrangle_key: select.right +aliases: [] +slug: select/right +status: active +visibility: public +tags: + - select + - right +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.select.right + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the column(s) to edit. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: length + description: >- + Number of characters to include from the right. If negative, this will remove the specified + number of characters from the right. May not equal 0. + required: true + role: option + schema: + type: integer + - name: output + description: Name of the output column(s). + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py + title: WranglesPY select.right implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/right.md + title: Existing select.right Markdown +--- + +# Right + +Select characters from the right of the input. Using a negative length reverses the side of selection, selecting from the left. + +## Migrated examples +#### Selecting the Three Rightmost Elements + +##### Recipe + +```yaml +wrangles: + - select.right: + input: Column + output: Result + length: 3 +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| pudding | + +
+ +
+ +##### Output Sample + +| Result | +| --- | +| ing | + +
+ +
diff --git a/registry/wrangles/select/sample.md b/registry/wrangles/select/sample.md new file mode 100644 index 0000000..b200b89 --- /dev/null +++ b/registry/wrangles/select/sample.md @@ -0,0 +1,132 @@ +--- +schema_version: '0.1' +type: wrangle +id: 95a84ab6-a66e-450f-8a4a-7a87e3a77932 +wrangle_name: sample +namespace: select +title: Sample +description: Return a random sample of the rows. +wrangle_key: select.sample +aliases: [] +slug: select/sample +status: active +visibility: public +tags: + - select + - sample +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.select.sample + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: rows + description: >- + If a whole number, will select that number of rows. If a decimal between 0 and 1 will select + that fraction of the rows e.g. 0.1 => 10% of rows will be returned. + required: true + role: option + schema: + type: + - integer + - number + exclusiveMinimum: 0 +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py + title: WranglesPY select.sample implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/sample.md + title: Existing select.sample Markdown +--- + +# Sample + +Return a random sample of the rows + +## Migrated examples +#### Selecting 2 Random Rows + +##### Recipe + +```yaml +wrangles: + - select.sample: + rows: 2 +``` + +
+ +
+ +##### Input Sample + +| Product | Manufacturer | +| --- | --- | +| Ball Bearing | SKF | +| Bearing Race | Timken | +| Needle Bearing | Acme Bearings | +| Roller Bearing | General Bearing Co. | + +
+ +
+ +##### Output Sample + +| Product | Manufacturer | +| --- | --- | +| Ball Bearing | SKF | +| Needle Bearing | Acme Bearings | + +
+ +
+ +#### Selecting a Random 25% of All Rows + +##### Recipe + +```yaml +wrangles: + - select.sample: + rows: .25 +``` + +
+ +
+ +##### Input Sample + +| Product | Manufacturer | +| --- | --- | +| Ball Bearing | SKF | +| Bearing Race | Timken | +| Needle Bearing | Acme Bearings | +| Roller Bearing | General Bearing Co. | + +
+ +
+ +##### Output Sample + +| Product | Manufacturer | +| --- | --- | +| Needle Bearing | Acme Bearings | + +
+ +
diff --git a/registry/wrangles/select/substring.md b/registry/wrangles/select/substring.md new file mode 100644 index 0000000..7e10467 --- /dev/null +++ b/registry/wrangles/select/substring.md @@ -0,0 +1,198 @@ +--- +schema_version: '0.1' +type: wrangle +id: 8befddf8-602e-4fa9-8f16-4c547210ebec +wrangle_name: substring +namespace: select +title: Substring +description: Return characters from the middle of text. +wrangle_key: select.substring +aliases: [] +slug: select/substring +status: active +visibility: public +tags: + - select + - substring +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.select.substring + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the column(s) to edit. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: start + description: >- + The position of the first character to select. If ommited will start from the beginning and + length must be provided. + required: false + role: option + runtime_default: null + schema: + type: + - integer + - 'null' + minimum: 1 + - name: length + description: >- + The length of the string to select. If ommited will select to the end of the string and start + must be provided. + required: false + role: option + runtime_default: null + schema: + type: + - integer + - 'null' + minimum: 1 + - name: output + description: Name of the output column(s). + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py + title: WranglesPY select.substring implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/substring.md + title: Existing select.substring Markdown +--- + +# Substring + +Return characters from the middle of text. + +## Migrated examples +#### Selecting a Substring With Start and Length + +##### Recipe + +```yaml +wrangles: + - select.substring: + input: Column + output: Result + start: 2 + length: 3 +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| pudding | + +
+ +
+ +##### Output Sample + +| Result | +| --- | +| udd | + +
+ +
+ +#### Selecting a Substring With Start Only + +##### Recipe + +```yaml +wrangles: + - select.substring: + input: Column + output: Result + start: 2 +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| pudding | + +
+ +
+ +##### Output Sample + +| Result | +| --- | +| udding | + +
+ +
+ +#### Selecting a Substring With Length Only + +##### Recipe + +```yaml +wrangles: + - select.substring: + input: Column + output: Result + length: 3 +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| pudding | + +
+ +
+ +##### Output Sample + +| Result | +| --- | +| pud | + +
+ +
diff --git a/registry/wrangles/select/tail.md b/registry/wrangles/select/tail.md new file mode 100644 index 0000000..9464a8e --- /dev/null +++ b/registry/wrangles/select/tail.md @@ -0,0 +1,90 @@ +--- +schema_version: '0.1' +type: wrangle +id: 60853759-c160-49a4-87eb-036516a9d823 +wrangle_name: tail +namespace: select +title: Tail +description: Return the last n rows. +wrangle_key: select.tail +aliases: [] +slug: select/tail +status: active +visibility: public +tags: + - select + - tail +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.select.tail + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: n + description: Number of rows to return. + required: true + role: option + schema: + type: integer +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py + title: WranglesPY select.tail implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/tail.md + title: Existing select.tail Markdown +--- + +# Tail + +Return the last n rows + +## Migrated examples +#### Selecting The Last n Rows + +##### Recipe + +```yaml +wrangles: + - select.tail: + n: 2 +``` + +
+ +
+ +##### Input Sample + +| Product | Manufacturer | +| --- | --- | +| Ball Bearing | SKF | +| Bearing Race | Timken | +| Needle Bearing | Acme Bearings | +| Roller Bearing | General Bearing Co. | + +
+ +
+ +##### Output Sample + +| Product | Manufacturer | +| --- | --- | +| Needle Bearing | Acme Bearings | +| Roller Bearing | General Bearing Co. | + +
+ +
diff --git a/registry/wrangles/select/threshold.md b/registry/wrangles/select/threshold.md new file mode 100644 index 0000000..342440e --- /dev/null +++ b/registry/wrangles/select/threshold.md @@ -0,0 +1,104 @@ +--- +schema_version: '0.1' +type: wrangle +id: af2a5dcc-0ec0-48d7-8fb4-f58d9c5391d2 +wrangle_name: threshold +namespace: select +title: Threshold +description: Select the first option if it exceeds a given threshold, else the second option. +wrangle_key: select.threshold +aliases: [] +slug: select/threshold +status: active +visibility: public +tags: + - select + - threshold +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.select.threshold + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: List of the input columns to select from. + required: true + role: column-selector + schema: + type: array + - name: output + description: Name of the output column. + required: true + role: column-output + schema: + type: string + - name: threshold + description: Threshold above which to choose the first option, otherwise the second. + required: true + role: option + schema: + type: number + minimum: 0 + maximum: 1 +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py + title: WranglesPY select.threshold implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/threshold.md + title: Existing select.threshold Markdown +--- + +# Threshold + +Select the first option if it exceeds a given threshold, else the second option. + +## Migrated examples +#### Selecting Results Above a Threshold + +##### Recipe + +```yaml +wrangles: + - select.threshold: + input: + - Col1 + - Col2 + output: Result + threshold: .77 +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | +| --- | --- | +| ['A', 0.6] | ['B', 0.79] | + +
+ +
+ +##### Output Sample + +| Result | +| --- | +| B | + +
+ +
diff --git a/registry/wrangles/split/dictionary.md b/registry/wrangles/split/dictionary.md new file mode 100644 index 0000000..131ac37 --- /dev/null +++ b/registry/wrangles/split/dictionary.md @@ -0,0 +1,308 @@ +--- +schema_version: '0.1' +type: wrangle +id: 06ca98e4-d026-43f7-84eb-af246d401ba9 +wrangle_name: dictionary +namespace: split +title: Dictionary +description: >- + Split one or more dictionaries into columns. The dictionary keys will be returned as the new + column headers. If the dictionaries contain overlapping values, the last value will be returned. +wrangle_key: split.dictionary +aliases: [] +slug: split/dictionary +status: active +visibility: public +tags: + - split + - dictionary +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.split.dictionary + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: >- + Name or lists of the column(s) containing dictionaries to be split. If providing multiple + dictionaries and the dictionaries contain overlapping values, the last value will be returned. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: >- + In columns output_format, this is an optional subset of keys to extract from the dictionary. + If not provided, all keys will be returned. Columns can be renamed with the following syntax: + output: - key1: new_column_name1 - key2: new_column_name2 In to_lists output_format, this must + be two output columns for the keys and values lists. If not provided, Keys and Values will be + used. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: default + description: Provide a set of default headings and values if they are not found within the input. + required: false + role: fallback-value + runtime_default: null + schema: + type: + - object + - 'null' + - name: output_format + description: >- + How to split the dictionary. columns creates one output column for each dictionary key. + to_lists creates two output columns containing lists of keys and values. + required: false + role: column-output + runtime_default: columns + schema: + type: string + enum: + - columns + - to_lists +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/split.py + title: WranglesPY split.dictionary implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/split/_sources/dictionary.md + title: Existing split.dictionary Markdown +--- + +# Dictionary + +Split a dictionary into columns. The dictionary keys are used as the new column headers. + +## Migrated examples +#### Splitting an Entire Dictionary + +##### Recipe + +```yaml +wrangles: + - split.dictionary: + input: Column + # Output not required +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | + +
+ +
+ +##### Output Sample + +| Col1 | Col2 | Col3 | +| --- | --- | --- | +| A | B | C | + +
+ +
+ +#### Choosing Specific Keys by Name + +##### Recipe + +```yaml +wrangles: + - split.dictionary: + input: Column + output: Col2 +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | + +
+ +
+ +##### Output Sample + +| Col2 | +| --- | +| B | + +
+ +
+ +#### Using a Wildcard Output to Choose Specific Keys + +##### Recipe + +```yaml +wrangles: + - split.dictionary: + input: Column + output: Col* +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| \{'Col1': 'A', 'Col2': 'B', 'Other': 'C'\} | + +
+ +
+ +##### Output Sample + +| Col1 | Col2 | +| --- | --- | +| A | B | + +
+ +
+ +#### Using Regular Expressions to Choose Specific Keys + +##### Recipe + +```yaml +wrangles: + - split.dictionary: + input: Column + output: "regex: .*3" +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | + +
+ +
+ +##### Output Sample + +| Col3 | +| --- | +| C | + +
+ +
+ +#### Choosing Specific Keys While Renaming the Output + +##### Recipe + +```yaml +wrangles: + - split.dictionary: + input: Column + output: + - Col1: Column 1 + - Col2: Column 2 +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | + +
+ +
+ +##### Output Sample + +| Column 1 | Column 2 | +| --- | --- | +| A | B | + +
+ +
+ +#### Using a Wildcard While Renaming + +##### Recipe + +```yaml +wrangles: + - split.dictionary: + input: Column + output: + - Col*: Column * +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | + +
+ +
+ +##### Output Sample + +| Column 1 | Column 2 | Column 3 | +| --- | --- | --- | +| A | B | C | + +
+ +
diff --git a/registry/wrangles/split/list.md b/registry/wrangles/split/list.md new file mode 100644 index 0000000..c96388e --- /dev/null +++ b/registry/wrangles/split/list.md @@ -0,0 +1,137 @@ +--- +schema_version: '0.1' +type: wrangle +id: 3260b9f7-aae2-499f-8004-d211c2cf643e +wrangle_name: list +namespace: split +title: List +description: Split a list in a single column to multiple columns. +wrangle_key: split.list +aliases: [] +slug: split/list +status: active +visibility: public +tags: + - split + - list +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.split.list + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the column to be split. + required: true + role: column-selector + schema: + type: + - string + - integer + - name: output + description: >- + Name of column(s) for the results. If providing a single column, use a wildcard (*) to + indicate a incrementing integer. + required: true + role: column-output + schema: + type: + - string + - array +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/split.py + title: WranglesPY split.list implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/split/_sources/list.md + title: Existing split.list Markdown +--- + +# List + +Split a list into multiple columns. If only one output is given, `split.list` returns the same list it was given, so output should be a list of columns or a column name with a wildcard (`*`). + +## Migrated examples +#### Using a Wildcard + +##### Recipe + +```yaml +wrangles: + - split.list: + input: Column + output: Column* +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| ['A', 'B', 'C'] | + +
+ +
+ +##### Output Sample + +| Column1 | Column2 | Column3 | +| --- | --- | --- | +| A | B | C | + +
+ +
+ +#### Named Columns + +##### Recipe + +```yaml +wrangles: + - split.list: + input: Column + output: + - Heading A + - Heading B + - Heading C +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| ['A', 'B', 'C'] | + +
+ +
+ +##### Output Sample + +| Heading A | Heading B | Heading C | +| --- | --- | --- | +| A | B | C | + +
+ +
diff --git a/registry/wrangles/split/text.md b/registry/wrangles/split/text.md new file mode 100644 index 0000000..1d69806 --- /dev/null +++ b/registry/wrangles/split/text.md @@ -0,0 +1,298 @@ +--- +schema_version: '0.1' +type: wrangle +id: e76e43f7-d129-4bf8-87b4-a304a378b130 +wrangle_name: text +namespace: split +title: Text +description: Split a string to multiple columns or a list. +wrangle_key: split.text +aliases: [] +slug: split/text +status: active +visibility: public +tags: + - split + - text +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.split.text + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the column to be split. + required: true + role: column-selector + schema: + type: string + - name: output + description: >- + Name of the output column(s) If a single column is provided, the results will be returned as a + list If multiple columns are listed, the results will be separated into the columns. If + omitted, will overwrite the input. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: char + description: >- + Set the character(s) to split on. Default comma (,) Can also prefix with "regex:" to split on + a pattern. + required: false + role: option + runtime_default: ',' + schema: + type: string + - name: pad + description: >- + Choose whether to pad to ensure a consistent length. Default true if outputting to columns, + false for lists. + required: false + role: option + runtime_default: null + schema: + type: + - boolean + - 'null' + - name: element + description: >- + Select a specific element or range after splitting using slicing syntax. e.g. 0, ":5", "5:", + "2:8:2". + required: false + role: option + runtime_default: null + schema: + type: + - string + - integer + - 'null' + - name: inclusive + description: If true, include the split character in the output. Default False. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: skip_empty + description: Whether to skip empty values. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/split.py + title: WranglesPY split.text implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/split/_sources/text.md + title: Existing split.text Markdown +--- + +# Text + +Split text strings on certain characters. The text can be split into either multiple columns or a list. + +## Migrated examples +#### To a List + +##### Recipe + +```yaml +wrangles: + - split.text: + input: Column1 + output: Column2 + char: ', ' +``` + +
+ +
+ +##### Input Sample + +| Column1 | +| --- | +| Hello, Wrangles! | + +
+ +
+ +##### Output Sample + +| Column2 | +| --- | +| ['Hello', 'Wrangles!'] | + +
+ +
+ +#### Split Using Regex + +##### Recipe + +```yaml +# Split on x, case insensitive. +wrangles: + - split.text: + input: Col1 + output: Col2 + char: 'regex:(?i)x' +``` + +
+ +
+ +##### Input Sample + +| Col1 | +| --- | +| 1x2 | +| 1X2 | + +
+ +
+ +##### Output Sample + +| Col2 | +| --- | +| ['1', '2'] | +| ['1', '2'] | + +
+ +
+ +#### Slice the Output + +##### Recipe + +```yaml +wrangles: + - split.text: + input: Column1 + output: Column2 + char: ', ' + element: 0 +``` + +
+ +
+ +##### Input Sample + +| Column1 | +| --- | +| Hello, Wrangles! | + +
+ +
+ +##### Output Sample + +| Column2 | +| --- | +| Hello | + +
+ +
+ +#### Split to Columns (Wildcard) + +##### Recipe + +```yaml +wrangles: + - split.text: + input: Col + output: Col* # Optional + char: ', ' +``` + +
+ +
+ +##### Input Sample + +| Col | +| --- | +| Hello, Wrangles! | + +
+ +
+ +##### Output Sample + +| Col1 | Col2 | +| --- | --- | +| Hello | Wrangles! | + +
+ +
+ +#### Split to Columns (Named) + +##### Recipe + +```yaml +wrangles: + - split.text: + input: Col + output: + - Col 1 + - Col 2 + - Col 3 + char: ', ' +``` + +
+ +
+ +##### Input Sample + +| Col | +| --- | +| Wrangles, are, Cool! | + +
+ +
+ +##### Output Sample + +| Col 1 | Col 2 | Col 3 | +| --- | --- | --- | +| Wrangles | are | Cool! | + +
+ +
diff --git a/registry/wrangles/split/tokenize.md b/registry/wrangles/split/tokenize.md new file mode 100644 index 0000000..bfd3a10 --- /dev/null +++ b/registry/wrangles/split/tokenize.md @@ -0,0 +1,153 @@ +--- +schema_version: '0.1' +type: wrangle +id: 6cc88418-ae0c-43f6-84ee-31e0d5f838c3 +wrangle_name: tokenize +namespace: split +title: Tokenize +description: >- + Split text into tokens. A variety of methods are available. The default method is to split on + spaces. +wrangle_key: split.tokenize +aliases: [] +slug: split/tokenize +status: active +visibility: public +tags: + - split + - tokenize +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.split.tokenize + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Column(s) to be split into tokens. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output column. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: method + description: >- + Method to split the list. Options include `space`, `boundary`, `boundary_ignore_space`, custom + functions as `custom.`, or regex patterns as `regex:`. + required: false + role: option + runtime_default: space + schema: + anyOf: + - type: string + enum: + - space + - boundary + - boundary_ignore_space + - type: string +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/split.py + title: WranglesPY split.tokenize implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/split/_sources/tokenize.md + title: Existing split.tokenize Markdown +--- + +# Tokenize + +Tokenize elements in a list or string into individual tokens. + +## Migrated examples +#### Tokenizing a String + +##### Recipe + +```yaml +wrangles: + - split.tokenize: + input: Materials + output: Tokenized List +``` + +
+ +
+ +##### Input Sample + +| Materials | +| --- | +| Stainless Steel Oak Wood | + +
+ +
+ +##### Output Sample + +| Tokenized List | +| --- | +| ['Stainless', 'Steel', 'Oak', 'Wood'] | + +
+ +
+ + +#### Tokenizing a List + +##### Recipe + +```yaml +wrangles: + - split.tokenize: + input: Materials + output: Tokenized List +``` + +
+ +
+ +##### Input Sample + +| Materials | +| --- | +| ['Stainless Steel', 'Oak Wood'] | + +
+ +
+ +##### Output Sample + +| Tokenized List | +| --- | +| ['Stainless', 'Steel', 'Oak', 'Wood'] | + +
+ +
diff --git a/registry/wrangles/standardize/clean.md b/registry/wrangles/standardize/clean.md new file mode 100644 index 0000000..f8a7a9b --- /dev/null +++ b/registry/wrangles/standardize/clean.md @@ -0,0 +1,149 @@ +--- +schema_version: '0.1' +type: wrangle +id: null +wrangle_name: clean +namespace: standardize +title: Standardize Clean +description: >- + Repair common encoding, Unicode, HTML character reference, control character, and whitespace + problems locally. +wrangle_key: standardize.clean +aliases: [] +slug: standardize/clean +status: active +visibility: public +tags: + - standardize + - clean +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.standardize.clean + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name or list of input columns. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name or list of output columns. Defaults to overwriting input. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - integer + - array + - 'null' + - name: fix_encoding + description: Repair mojibake and other reversible encoding errors. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: unescape_html + description: >- + Decode HTML character references. Auto avoids decoding text that appears to contain HTML + markup. + required: false + role: option + runtime_default: auto + schema: + anyOf: + - type: boolean + - type: string + enum: + - auto + - name: normalization + description: Unicode normalization form. + required: false + role: option + runtime_default: NFC + schema: + type: string + enum: + - NFC + - NFKC + - NFD + - NFKD + - null + - name: fix_character_width + description: Normalize fullwidth and halfwidth characters. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: uncurl_quotes + description: Replace typographic quotes with straight quotes. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: remove_control_chars + description: Remove C0 and C1 control characters. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: collapse_whitespace + description: Collapse runs of Unicode whitespace. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: preserve_line_breaks + description: Preserve line breaks while collapsing other whitespace. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: trim + description: Remove leading and trailing whitespace. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: separator + description: Text used to join multiple input columns into one output. + required: false + role: option + runtime_default: ' ' + schema: + type: string +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/standardize.py + title: WranglesPY standardize.clean implementation +--- + +# Standardize Clean + +## Behavior + +Repair common encoding, Unicode, HTML character reference, control character, and whitespace problems locally. + +This first-pass guidance is derived from the callable signature and its embedded Python schema docstring. diff --git a/registry/wrangles/standardize/custom.md b/registry/wrangles/standardize/custom.md new file mode 100644 index 0000000..5f9e07c --- /dev/null +++ b/registry/wrangles/standardize/custom.md @@ -0,0 +1,81 @@ +--- +schema_version: '0.1' +type: wrangle +id: null +wrangle_name: custom +namespace: standardize +title: Standardize Custom +description: >- + Standardize data using a DIY or bespoke standardization wrangle. Requires WrangleWorks Account and + Subscription. +wrangle_key: standardize.custom +aliases: [] +slug: standardize/custom +status: active +visibility: public +tags: + - standardize + - custom +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.standardize.custom + contract_status: verified +access: + ai_powered: false + requires_account: true + requires_subscription: true + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name or list of input columns. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: model_id + description: The ID of the wrangle to use (do not include 'find' and 'replace'). + required: true + role: model-reference + schema: + type: + - string + - array + - name: output + description: Name or list of output columns. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: case_sensitive + description: Allows the wrangle to be case sensitive if set to True, default is False. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/standardize.py + title: WranglesPY standardize.custom implementation +--- + +# Standardize Custom + +## Behavior + +Standardize data using a DIY or bespoke standardization wrangle. Requires WrangleWorks Account and Subscription. + +This first-pass guidance is derived from the callable signature and its embedded Python schema docstring. diff --git a/scripts/generate_wrangle_docs_from_db.py b/scripts/generate_wrangle_docs_from_db.py index 0253cc1..242e444 100644 --- a/scripts/generate_wrangle_docs_from_db.py +++ b/scripts/generate_wrangle_docs_from_db.py @@ -5,9 +5,9 @@ export DATABASE_URL='postgresql://user:password@host:5432/database' Output: - my-docs-site/wrangle-docs/index.md - my-docs-site/wrangle-docs//.md - my-docs-site/wrangle-docs//_sources/.md + wrangles-docs/wrangle-docs/index.md + wrangles-docs/wrangle-docs//.md + wrangles-docs/wrangle-docs//_sources/.md Each category page imports separate wrangle source Markdown files from its _sources folder. @@ -30,7 +30,7 @@ ROOT = Path(__file__).resolve().parents[1] DEFAULT_TABLE = "public.wranglesio_content" -DEFAULT_OUTPUT_DIR = ROOT / "my-docs-site/wrangle-docs" +DEFAULT_OUTPUT_DIR = ROOT / "wrangles-docs/wrangle-docs" DEFAULT_TEMPLATE = DEFAULT_OUTPUT_DIR / "wrangle_template.md" CATEGORY_DESCRIPTIONS = { diff --git a/scripts/seed_wrangle_examples.py b/scripts/seed_wrangle_examples.py index c69c5cd..32cc657 100644 --- a/scripts/seed_wrangle_examples.py +++ b/scripts/seed_wrangle_examples.py @@ -22,7 +22,7 @@ ROOT = Path(__file__).resolve().parents[1] -MAPPINGS_PATH = ROOT / "my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json" +MAPPINGS_PATH = ROOT / "wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json" DEFAULT_TABLE = "public.wranglesio_content" @@ -317,7 +317,7 @@ def collect_examples() -> dict[str, list[dict[str, Any]]]: seen = set() for doc_path in docs_paths: - full_path = ROOT / "my-docs-site" / doc_path + full_path = ROOT / "wrangles-docs" / doc_path if not full_path.exists(): continue diff --git a/scripts/seed_wranglesio_content.py b/scripts/seed_wranglesio_content.py index faf2c8f..cff74ed 100644 --- a/scripts/seed_wranglesio_content.py +++ b/scripts/seed_wranglesio_content.py @@ -19,8 +19,8 @@ ROOT = Path(__file__).resolve().parents[1] -CATALOG_PATH = ROOT / "my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js" -MAPPINGS_PATH = ROOT / "my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json" +CATALOG_PATH = ROOT / "wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js" +MAPPINGS_PATH = ROOT / "wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json" DEFAULT_TABLE = "public.wranglesio_content" diff --git a/my-docs-site/.dockerignore b/wrangles-docs/.dockerignore similarity index 100% rename from my-docs-site/.dockerignore rename to wrangles-docs/.dockerignore diff --git a/my-docs-site/.gitignore b/wrangles-docs/.gitignore similarity index 100% rename from my-docs-site/.gitignore rename to wrangles-docs/.gitignore diff --git a/my-docs-site/Dockerfile b/wrangles-docs/Dockerfile similarity index 100% rename from my-docs-site/Dockerfile rename to wrangles-docs/Dockerfile diff --git "a/my-docs-site/Screenshot 2026-08-14 at 7.31.47\342\200\257PM.png" "b/wrangles-docs/Screenshot 2026-08-14 at 7.31.47\342\200\257PM.png" similarity index 100% rename from "my-docs-site/Screenshot 2026-08-14 at 7.31.47\342\200\257PM.png" rename to "wrangles-docs/Screenshot 2026-08-14 at 7.31.47\342\200\257PM.png" diff --git a/my-docs-site/blog/.gitkeep b/wrangles-docs/blog/.gitkeep similarity index 100% rename from my-docs-site/blog/.gitkeep rename to wrangles-docs/blog/.gitkeep diff --git a/my-docs-site/deploy/default.conf b/wrangles-docs/deploy/default.conf similarity index 100% rename from my-docs-site/deploy/default.conf rename to wrangles-docs/deploy/default.conf diff --git a/my-docs-site/deploy/docusaurus-wrangles-io.portainer-compose.yml b/wrangles-docs/deploy/docusaurus-wrangles-io.portainer-compose.yml similarity index 100% rename from my-docs-site/deploy/docusaurus-wrangles-io.portainer-compose.yml rename to wrangles-docs/deploy/docusaurus-wrangles-io.portainer-compose.yml diff --git a/my-docs-site/docs/.gitkeep b/wrangles-docs/docs/.gitkeep similarity index 100% rename from my-docs-site/docs/.gitkeep rename to wrangles-docs/docs/.gitkeep diff --git a/my-docs-site/docs/ADI/PRA-How-To.md b/wrangles-docs/docs/ADI/PRA-How-To.md similarity index 100% rename from my-docs-site/docs/ADI/PRA-How-To.md rename to wrangles-docs/docs/ADI/PRA-How-To.md diff --git a/my-docs-site/docs/account.md b/wrangles-docs/docs/account.md similarity index 100% rename from my-docs-site/docs/account.md rename to wrangles-docs/docs/account.md diff --git a/my-docs-site/docs/account/secrets.md b/wrangles-docs/docs/account/secrets.md similarity index 100% rename from my-docs-site/docs/account/secrets.md rename to wrangles-docs/docs/account/secrets.md diff --git a/my-docs-site/docs/comparison-table.md b/wrangles-docs/docs/comparison-table.md similarity index 100% rename from my-docs-site/docs/comparison-table.md rename to wrangles-docs/docs/comparison-table.md diff --git a/my-docs-site/docs/excel.md b/wrangles-docs/docs/excel.md similarity index 100% rename from my-docs-site/docs/excel.md rename to wrangles-docs/docs/excel.md diff --git a/my-docs-site/docs/excel/Let's-Get-Ready-To-Wrangle.md b/wrangles-docs/docs/excel/Let's-Get-Ready-To-Wrangle.md similarity index 100% rename from my-docs-site/docs/excel/Let's-Get-Ready-To-Wrangle.md rename to wrangles-docs/docs/excel/Let's-Get-Ready-To-Wrangle.md diff --git a/my-docs-site/docs/excel/Let's-Get-Ready-To-Wrangle/Cleaning-Data.md b/wrangles-docs/docs/excel/Let's-Get-Ready-To-Wrangle/Cleaning-Data.md similarity index 100% rename from my-docs-site/docs/excel/Let's-Get-Ready-To-Wrangle/Cleaning-Data.md rename to wrangles-docs/docs/excel/Let's-Get-Ready-To-Wrangle/Cleaning-Data.md diff --git a/my-docs-site/docs/excel/Let's-Get-Ready-To-Wrangle/Combining-Descriptions.md b/wrangles-docs/docs/excel/Let's-Get-Ready-To-Wrangle/Combining-Descriptions.md similarity index 100% rename from my-docs-site/docs/excel/Let's-Get-Ready-To-Wrangle/Combining-Descriptions.md rename to wrangles-docs/docs/excel/Let's-Get-Ready-To-Wrangle/Combining-Descriptions.md diff --git a/my-docs-site/docs/excel/Let's-Get-Ready-To-Wrangle/Extracting-Data.md b/wrangles-docs/docs/excel/Let's-Get-Ready-To-Wrangle/Extracting-Data.md similarity index 100% rename from my-docs-site/docs/excel/Let's-Get-Ready-To-Wrangle/Extracting-Data.md rename to wrangles-docs/docs/excel/Let's-Get-Ready-To-Wrangle/Extracting-Data.md diff --git a/my-docs-site/docs/excel/Let's-Get-Ready-To-Wrangle/Extracting-From-Dirty-Data.md b/wrangles-docs/docs/excel/Let's-Get-Ready-To-Wrangle/Extracting-From-Dirty-Data.md similarity index 100% rename from my-docs-site/docs/excel/Let's-Get-Ready-To-Wrangle/Extracting-From-Dirty-Data.md rename to wrangles-docs/docs/excel/Let's-Get-Ready-To-Wrangle/Extracting-From-Dirty-Data.md diff --git a/my-docs-site/docs/excel/Let's-Get-Ready-To-Wrangle/Making-Sense-of-Dirty-Data.md b/wrangles-docs/docs/excel/Let's-Get-Ready-To-Wrangle/Making-Sense-of-Dirty-Data.md similarity index 100% rename from my-docs-site/docs/excel/Let's-Get-Ready-To-Wrangle/Making-Sense-of-Dirty-Data.md rename to wrangles-docs/docs/excel/Let's-Get-Ready-To-Wrangle/Making-Sense-of-Dirty-Data.md diff --git a/my-docs-site/docs/excel/Let's-Get-Ready-To-Wrangle/Merge-Lists-With-Strings.md b/wrangles-docs/docs/excel/Let's-Get-Ready-To-Wrangle/Merge-Lists-With-Strings.md similarity index 100% rename from my-docs-site/docs/excel/Let's-Get-Ready-To-Wrangle/Merge-Lists-With-Strings.md rename to wrangles-docs/docs/excel/Let's-Get-Ready-To-Wrangle/Merge-Lists-With-Strings.md diff --git a/my-docs-site/docs/excel/Let's-Get-Ready-To-Wrangle/Removing-Words.md b/wrangles-docs/docs/excel/Let's-Get-Ready-To-Wrangle/Removing-Words.md similarity index 100% rename from my-docs-site/docs/excel/Let's-Get-Ready-To-Wrangle/Removing-Words.md rename to wrangles-docs/docs/excel/Let's-Get-Ready-To-Wrangle/Removing-Words.md diff --git a/my-docs-site/docs/excel/Let's-Get-Ready-To-Wrangle/Standardizing-Lists.md b/wrangles-docs/docs/excel/Let's-Get-Ready-To-Wrangle/Standardizing-Lists.md similarity index 100% rename from my-docs-site/docs/excel/Let's-Get-Ready-To-Wrangle/Standardizing-Lists.md rename to wrangles-docs/docs/excel/Let's-Get-Ready-To-Wrangle/Standardizing-Lists.md diff --git a/my-docs-site/docs/excel/Let's-Get-Ready-To-Wrangle/Trimming-Company-Names.md b/wrangles-docs/docs/excel/Let's-Get-Ready-To-Wrangle/Trimming-Company-Names.md similarity index 100% rename from my-docs-site/docs/excel/Let's-Get-Ready-To-Wrangle/Trimming-Company-Names.md rename to wrangles-docs/docs/excel/Let's-Get-Ready-To-Wrangle/Trimming-Company-Names.md diff --git a/my-docs-site/docs/excel/Let's-Get-Ready-To-Wrangle/Use-Labels.md b/wrangles-docs/docs/excel/Let's-Get-Ready-To-Wrangle/Use-Labels.md similarity index 100% rename from my-docs-site/docs/excel/Let's-Get-Ready-To-Wrangle/Use-Labels.md rename to wrangles-docs/docs/excel/Let's-Get-Ready-To-Wrangle/Use-Labels.md diff --git a/my-docs-site/docs/excel/Let's-Get-Ready-To-Wrangle/description.md b/wrangles-docs/docs/excel/Let's-Get-Ready-To-Wrangle/description.md similarity index 100% rename from my-docs-site/docs/excel/Let's-Get-Ready-To-Wrangle/description.md rename to wrangles-docs/docs/excel/Let's-Get-Ready-To-Wrangle/description.md diff --git a/my-docs-site/docs/excel/Let's-Get-Ready-To-Wrangle/filtering.md b/wrangles-docs/docs/excel/Let's-Get-Ready-To-Wrangle/filtering.md similarity index 100% rename from my-docs-site/docs/excel/Let's-Get-Ready-To-Wrangle/filtering.md rename to wrangles-docs/docs/excel/Let's-Get-Ready-To-Wrangle/filtering.md diff --git a/my-docs-site/docs/excel/Lookup.md b/wrangles-docs/docs/excel/Lookup.md similarity index 100% rename from my-docs-site/docs/excel/Lookup.md rename to wrangles-docs/docs/excel/Lookup.md diff --git a/my-docs-site/docs/excel/basics.md b/wrangles-docs/docs/excel/basics.md similarity index 100% rename from my-docs-site/docs/excel/basics.md rename to wrangles-docs/docs/excel/basics.md diff --git a/my-docs-site/docs/excel/classify.md b/wrangles-docs/docs/excel/classify.md similarity index 100% rename from my-docs-site/docs/excel/classify.md rename to wrangles-docs/docs/excel/classify.md diff --git a/my-docs-site/docs/excel/custom-wrangles.md b/wrangles-docs/docs/excel/custom-wrangles.md similarity index 100% rename from my-docs-site/docs/excel/custom-wrangles.md rename to wrangles-docs/docs/excel/custom-wrangles.md diff --git a/my-docs-site/docs/excel/diy.md b/wrangles-docs/docs/excel/diy.md similarity index 100% rename from my-docs-site/docs/excel/diy.md rename to wrangles-docs/docs/excel/diy.md diff --git a/my-docs-site/docs/excel/extract.md b/wrangles-docs/docs/excel/extract.md similarity index 100% rename from my-docs-site/docs/excel/extract.md rename to wrangles-docs/docs/excel/extract.md diff --git a/my-docs-site/docs/excel/extract2.md b/wrangles-docs/docs/excel/extract2.md similarity index 100% rename from my-docs-site/docs/excel/extract2.md rename to wrangles-docs/docs/excel/extract2.md diff --git a/my-docs-site/docs/excel/format.md b/wrangles-docs/docs/excel/format.md similarity index 100% rename from my-docs-site/docs/excel/format.md rename to wrangles-docs/docs/excel/format.md diff --git a/my-docs-site/docs/excel/in-depth-example/extract-materials.md b/wrangles-docs/docs/excel/in-depth-example/extract-materials.md similarity index 100% rename from my-docs-site/docs/excel/in-depth-example/extract-materials.md rename to wrangles-docs/docs/excel/in-depth-example/extract-materials.md diff --git a/my-docs-site/docs/excel/in-depth-examples.md b/wrangles-docs/docs/excel/in-depth-examples.md similarity index 100% rename from my-docs-site/docs/excel/in-depth-examples.md rename to wrangles-docs/docs/excel/in-depth-examples.md diff --git a/my-docs-site/docs/excel/in-depth-examples/example-1.md b/wrangles-docs/docs/excel/in-depth-examples/example-1.md similarity index 100% rename from my-docs-site/docs/excel/in-depth-examples/example-1.md rename to wrangles-docs/docs/excel/in-depth-examples/example-1.md diff --git a/my-docs-site/docs/excel/in-depth-examples/example-1/step-1.md b/wrangles-docs/docs/excel/in-depth-examples/example-1/step-1.md similarity index 100% rename from my-docs-site/docs/excel/in-depth-examples/example-1/step-1.md rename to wrangles-docs/docs/excel/in-depth-examples/example-1/step-1.md diff --git a/my-docs-site/docs/excel/in-depth-examples/example-1/step-2.md b/wrangles-docs/docs/excel/in-depth-examples/example-1/step-2.md similarity index 100% rename from my-docs-site/docs/excel/in-depth-examples/example-1/step-2.md rename to wrangles-docs/docs/excel/in-depth-examples/example-1/step-2.md diff --git a/my-docs-site/docs/excel/in-depth-examples/example-1/step-3.md b/wrangles-docs/docs/excel/in-depth-examples/example-1/step-3.md similarity index 100% rename from my-docs-site/docs/excel/in-depth-examples/example-1/step-3.md rename to wrangles-docs/docs/excel/in-depth-examples/example-1/step-3.md diff --git a/my-docs-site/docs/excel/in-depth-examples/example-1/step-4.md b/wrangles-docs/docs/excel/in-depth-examples/example-1/step-4.md similarity index 100% rename from my-docs-site/docs/excel/in-depth-examples/example-1/step-4.md rename to wrangles-docs/docs/excel/in-depth-examples/example-1/step-4.md diff --git a/my-docs-site/docs/excel/in-depth-examples/example-1/step-5.md b/wrangles-docs/docs/excel/in-depth-examples/example-1/step-5.md similarity index 100% rename from my-docs-site/docs/excel/in-depth-examples/example-1/step-5.md rename to wrangles-docs/docs/excel/in-depth-examples/example-1/step-5.md diff --git a/my-docs-site/docs/excel/in-depth-examples/example-1/step-6.md b/wrangles-docs/docs/excel/in-depth-examples/example-1/step-6.md similarity index 100% rename from my-docs-site/docs/excel/in-depth-examples/example-1/step-6.md rename to wrangles-docs/docs/excel/in-depth-examples/example-1/step-6.md diff --git a/my-docs-site/docs/excel/in-depth-examples/example-1/step-7.md b/wrangles-docs/docs/excel/in-depth-examples/example-1/step-7.md similarity index 100% rename from my-docs-site/docs/excel/in-depth-examples/example-1/step-7.md rename to wrangles-docs/docs/excel/in-depth-examples/example-1/step-7.md diff --git a/my-docs-site/docs/excel/in-depth-examples/example-1/using-extract-stock-wrangles.md b/wrangles-docs/docs/excel/in-depth-examples/example-1/using-extract-stock-wrangles.md similarity index 100% rename from my-docs-site/docs/excel/in-depth-examples/example-1/using-extract-stock-wrangles.md rename to wrangles-docs/docs/excel/in-depth-examples/example-1/using-extract-stock-wrangles.md diff --git a/my-docs-site/docs/excel/install.md b/wrangles-docs/docs/excel/install.md similarity index 100% rename from my-docs-site/docs/excel/install.md rename to wrangles-docs/docs/excel/install.md diff --git a/my-docs-site/docs/excel/map.md b/wrangles-docs/docs/excel/map.md similarity index 100% rename from my-docs-site/docs/excel/map.md rename to wrangles-docs/docs/excel/map.md diff --git a/my-docs-site/docs/excel/my_wrangles.md b/wrangles-docs/docs/excel/my_wrangles.md similarity index 100% rename from my-docs-site/docs/excel/my_wrangles.md rename to wrangles-docs/docs/excel/my_wrangles.md diff --git a/my-docs-site/docs/excel/my_wrangles/classify.md b/wrangles-docs/docs/excel/my_wrangles/classify.md similarity index 100% rename from my-docs-site/docs/excel/my_wrangles/classify.md rename to wrangles-docs/docs/excel/my_wrangles/classify.md diff --git a/my-docs-site/docs/excel/my_wrangles/extract.md b/wrangles-docs/docs/excel/my_wrangles/extract.md similarity index 100% rename from my-docs-site/docs/excel/my_wrangles/extract.md rename to wrangles-docs/docs/excel/my_wrangles/extract.md diff --git a/my-docs-site/docs/excel/my_wrangles/permissions.md b/wrangles-docs/docs/excel/my_wrangles/permissions.md similarity index 100% rename from my-docs-site/docs/excel/my_wrangles/permissions.md rename to wrangles-docs/docs/excel/my_wrangles/permissions.md diff --git a/my-docs-site/docs/excel/my_wrangles/standardize.md b/wrangles-docs/docs/excel/my_wrangles/standardize.md similarity index 100% rename from my-docs-site/docs/excel/my_wrangles/standardize.md rename to wrangles-docs/docs/excel/my_wrangles/standardize.md diff --git a/my-docs-site/docs/excel/new-standardize.md b/wrangles-docs/docs/excel/new-standardize.md similarity index 100% rename from my-docs-site/docs/excel/new-standardize.md rename to wrangles-docs/docs/excel/new-standardize.md diff --git a/my-docs-site/docs/excel/recipes.md b/wrangles-docs/docs/excel/recipes.md similarity index 100% rename from my-docs-site/docs/excel/recipes.md rename to wrangles-docs/docs/excel/recipes.md diff --git a/my-docs-site/docs/excel/releases.md b/wrangles-docs/docs/excel/releases.md similarity index 100% rename from my-docs-site/docs/excel/releases.md rename to wrangles-docs/docs/excel/releases.md diff --git a/my-docs-site/docs/excel/standardize.md b/wrangles-docs/docs/excel/standardize.md similarity index 100% rename from my-docs-site/docs/excel/standardize.md rename to wrangles-docs/docs/excel/standardize.md diff --git a/my-docs-site/docs/excel/stock.md b/wrangles-docs/docs/excel/stock.md similarity index 100% rename from my-docs-site/docs/excel/stock.md rename to wrangles-docs/docs/excel/stock.md diff --git a/my-docs-site/docs/excel/supported-versions.md b/wrangles-docs/docs/excel/supported-versions.md similarity index 100% rename from my-docs-site/docs/excel/supported-versions.md rename to wrangles-docs/docs/excel/supported-versions.md diff --git a/my-docs-site/docs/excel/translate.md b/wrangles-docs/docs/excel/translate.md similarity index 100% rename from my-docs-site/docs/excel/translate.md rename to wrangles-docs/docs/excel/translate.md diff --git a/my-docs-site/docs/home.md b/wrangles-docs/docs/home.md similarity index 100% rename from my-docs-site/docs/home.md rename to wrangles-docs/docs/home.md diff --git a/my-docs-site/docs/install.md b/wrangles-docs/docs/install.md similarity index 100% rename from my-docs-site/docs/install.md rename to wrangles-docs/docs/install.md diff --git a/my-docs-site/docs/new-page.md b/wrangles-docs/docs/new-page.md similarity index 100% rename from my-docs-site/docs/new-page.md rename to wrangles-docs/docs/new-page.md diff --git a/my-docs-site/docs/new-standardiz.md b/wrangles-docs/docs/new-standardiz.md similarity index 100% rename from my-docs-site/docs/new-standardiz.md rename to wrangles-docs/docs/new-standardiz.md diff --git a/my-docs-site/docs/nlweb.md b/wrangles-docs/docs/nlweb.md similarity index 100% rename from my-docs-site/docs/nlweb.md rename to wrangles-docs/docs/nlweb.md diff --git a/my-docs-site/docs/organizations.md b/wrangles-docs/docs/organizations.md similarity index 100% rename from my-docs-site/docs/organizations.md rename to wrangles-docs/docs/organizations.md diff --git a/my-docs-site/docs/premium.md b/wrangles-docs/docs/premium.md similarity index 100% rename from my-docs-site/docs/premium.md rename to wrangles-docs/docs/premium.md diff --git a/my-docs-site/docs/python.md b/wrangles-docs/docs/python.md similarity index 100% rename from my-docs-site/docs/python.md rename to wrangles-docs/docs/python.md diff --git a/my-docs-site/docs/python/connectors.md b/wrangles-docs/docs/python/connectors.md similarity index 100% rename from my-docs-site/docs/python/connectors.md rename to wrangles-docs/docs/python/connectors.md diff --git a/my-docs-site/docs/python/connectors/akeneo.md b/wrangles-docs/docs/python/connectors/akeneo.md similarity index 100% rename from my-docs-site/docs/python/connectors/akeneo.md rename to wrangles-docs/docs/python/connectors/akeneo.md diff --git a/my-docs-site/docs/python/connectors/ckan.md b/wrangles-docs/docs/python/connectors/ckan.md similarity index 100% rename from my-docs-site/docs/python/connectors/ckan.md rename to wrangles-docs/docs/python/connectors/ckan.md diff --git a/my-docs-site/docs/python/connectors/concurrent.md b/wrangles-docs/docs/python/connectors/concurrent.md similarity index 100% rename from my-docs-site/docs/python/connectors/concurrent.md rename to wrangles-docs/docs/python/connectors/concurrent.md diff --git a/my-docs-site/docs/python/connectors/excel.md b/wrangles-docs/docs/python/connectors/excel.md similarity index 100% rename from my-docs-site/docs/python/connectors/excel.md rename to wrangles-docs/docs/python/connectors/excel.md diff --git a/my-docs-site/docs/python/connectors/file.md b/wrangles-docs/docs/python/connectors/file.md similarity index 100% rename from my-docs-site/docs/python/connectors/file.md rename to wrangles-docs/docs/python/connectors/file.md diff --git a/my-docs-site/docs/python/connectors/http.md b/wrangles-docs/docs/python/connectors/http.md similarity index 100% rename from my-docs-site/docs/python/connectors/http.md rename to wrangles-docs/docs/python/connectors/http.md diff --git a/my-docs-site/docs/python/connectors/input.md b/wrangles-docs/docs/python/connectors/input.md similarity index 100% rename from my-docs-site/docs/python/connectors/input.md rename to wrangles-docs/docs/python/connectors/input.md diff --git a/my-docs-site/docs/python/connectors/jinja.md b/wrangles-docs/docs/python/connectors/jinja.md similarity index 100% rename from my-docs-site/docs/python/connectors/jinja.md rename to wrangles-docs/docs/python/connectors/jinja.md diff --git a/my-docs-site/docs/python/connectors/matrix.md b/wrangles-docs/docs/python/connectors/matrix.md similarity index 100% rename from my-docs-site/docs/python/connectors/matrix.md rename to wrangles-docs/docs/python/connectors/matrix.md diff --git a/my-docs-site/docs/python/connectors/memory.md b/wrangles-docs/docs/python/connectors/memory.md similarity index 100% rename from my-docs-site/docs/python/connectors/memory.md rename to wrangles-docs/docs/python/connectors/memory.md diff --git a/my-docs-site/docs/python/connectors/mongodb.md b/wrangles-docs/docs/python/connectors/mongodb.md similarity index 100% rename from my-docs-site/docs/python/connectors/mongodb.md rename to wrangles-docs/docs/python/connectors/mongodb.md diff --git a/my-docs-site/docs/python/connectors/mssql.md b/wrangles-docs/docs/python/connectors/mssql.md similarity index 100% rename from my-docs-site/docs/python/connectors/mssql.md rename to wrangles-docs/docs/python/connectors/mssql.md diff --git a/my-docs-site/docs/python/connectors/mysql.md b/wrangles-docs/docs/python/connectors/mysql.md similarity index 100% rename from my-docs-site/docs/python/connectors/mysql.md rename to wrangles-docs/docs/python/connectors/mysql.md diff --git a/my-docs-site/docs/python/connectors/notification.md b/wrangles-docs/docs/python/connectors/notification.md similarity index 100% rename from my-docs-site/docs/python/connectors/notification.md rename to wrangles-docs/docs/python/connectors/notification.md diff --git a/my-docs-site/docs/python/connectors/notification/email.md b/wrangles-docs/docs/python/connectors/notification/email.md similarity index 100% rename from my-docs-site/docs/python/connectors/notification/email.md rename to wrangles-docs/docs/python/connectors/notification/email.md diff --git a/my-docs-site/docs/python/connectors/notification/slack.md b/wrangles-docs/docs/python/connectors/notification/slack.md similarity index 100% rename from my-docs-site/docs/python/connectors/notification/slack.md rename to wrangles-docs/docs/python/connectors/notification/slack.md diff --git a/my-docs-site/docs/python/connectors/notification/telegram.md b/wrangles-docs/docs/python/connectors/notification/telegram.md similarity index 100% rename from my-docs-site/docs/python/connectors/notification/telegram.md rename to wrangles-docs/docs/python/connectors/notification/telegram.md diff --git a/my-docs-site/docs/python/connectors/postgres.md b/wrangles-docs/docs/python/connectors/postgres.md similarity index 100% rename from my-docs-site/docs/python/connectors/postgres.md rename to wrangles-docs/docs/python/connectors/postgres.md diff --git a/my-docs-site/docs/python/connectors/pricefx.md b/wrangles-docs/docs/python/connectors/pricefx.md similarity index 100% rename from my-docs-site/docs/python/connectors/pricefx.md rename to wrangles-docs/docs/python/connectors/pricefx.md diff --git a/my-docs-site/docs/python/connectors/recipe.md b/wrangles-docs/docs/python/connectors/recipe.md similarity index 100% rename from my-docs-site/docs/python/connectors/recipe.md rename to wrangles-docs/docs/python/connectors/recipe.md diff --git a/my-docs-site/docs/python/connectors/s3.md b/wrangles-docs/docs/python/connectors/s3.md similarity index 100% rename from my-docs-site/docs/python/connectors/s3.md rename to wrangles-docs/docs/python/connectors/s3.md diff --git a/my-docs-site/docs/python/connectors/salesforce.md b/wrangles-docs/docs/python/connectors/salesforce.md similarity index 100% rename from my-docs-site/docs/python/connectors/salesforce.md rename to wrangles-docs/docs/python/connectors/salesforce.md diff --git a/my-docs-site/docs/python/connectors/sftp.md b/wrangles-docs/docs/python/connectors/sftp.md similarity index 100% rename from my-docs-site/docs/python/connectors/sftp.md rename to wrangles-docs/docs/python/connectors/sftp.md diff --git a/my-docs-site/docs/python/connectors/sqlite.md b/wrangles-docs/docs/python/connectors/sqlite.md similarity index 100% rename from my-docs-site/docs/python/connectors/sqlite.md rename to wrangles-docs/docs/python/connectors/sqlite.md diff --git a/my-docs-site/docs/python/connectors/ssh.md b/wrangles-docs/docs/python/connectors/ssh.md similarity index 100% rename from my-docs-site/docs/python/connectors/ssh.md rename to wrangles-docs/docs/python/connectors/ssh.md diff --git a/my-docs-site/docs/python/connectors/test.md b/wrangles-docs/docs/python/connectors/test.md similarity index 100% rename from my-docs-site/docs/python/connectors/test.md rename to wrangles-docs/docs/python/connectors/test.md diff --git a/my-docs-site/docs/python/connectors/train.md b/wrangles-docs/docs/python/connectors/train.md similarity index 100% rename from my-docs-site/docs/python/connectors/train.md rename to wrangles-docs/docs/python/connectors/train.md diff --git a/my-docs-site/docs/python/functions.md b/wrangles-docs/docs/python/functions.md similarity index 100% rename from my-docs-site/docs/python/functions.md rename to wrangles-docs/docs/python/functions.md diff --git a/my-docs-site/docs/python/install.md b/wrangles-docs/docs/python/install.md similarity index 100% rename from my-docs-site/docs/python/install.md rename to wrangles-docs/docs/python/install.md diff --git a/my-docs-site/docs/python/pipelines.md b/wrangles-docs/docs/python/pipelines.md similarity index 100% rename from my-docs-site/docs/python/pipelines.md rename to wrangles-docs/docs/python/pipelines.md diff --git a/my-docs-site/docs/python/prerequisites.md b/wrangles-docs/docs/python/prerequisites.md similarity index 100% rename from my-docs-site/docs/python/prerequisites.md rename to wrangles-docs/docs/python/prerequisites.md diff --git a/my-docs-site/docs/python/recipes.md b/wrangles-docs/docs/python/recipes.md similarity index 100% rename from my-docs-site/docs/python/recipes.md rename to wrangles-docs/docs/python/recipes.md diff --git a/my-docs-site/docs/python/recipes/conditions.md b/wrangles-docs/docs/python/recipes/conditions.md similarity index 100% rename from my-docs-site/docs/python/recipes/conditions.md rename to wrangles-docs/docs/python/recipes/conditions.md diff --git a/my-docs-site/docs/python/recipes/custom-functions.md b/wrangles-docs/docs/python/recipes/custom-functions.md similarity index 100% rename from my-docs-site/docs/python/recipes/custom-functions.md rename to wrangles-docs/docs/python/recipes/custom-functions.md diff --git a/my-docs-site/docs/python/recipes/custom-functions/read.md b/wrangles-docs/docs/python/recipes/custom-functions/read.md similarity index 100% rename from my-docs-site/docs/python/recipes/custom-functions/read.md rename to wrangles-docs/docs/python/recipes/custom-functions/read.md diff --git a/my-docs-site/docs/python/recipes/custom-functions/wrangles.md b/wrangles-docs/docs/python/recipes/custom-functions/wrangles.md similarity index 100% rename from my-docs-site/docs/python/recipes/custom-functions/wrangles.md rename to wrangles-docs/docs/python/recipes/custom-functions/wrangles.md diff --git a/my-docs-site/docs/python/recipes/custom-functions/write.md b/wrangles-docs/docs/python/recipes/custom-functions/write.md similarity index 100% rename from my-docs-site/docs/python/recipes/custom-functions/write.md rename to wrangles-docs/docs/python/recipes/custom-functions/write.md diff --git a/my-docs-site/docs/python/recipes/read.md b/wrangles-docs/docs/python/recipes/read.md similarity index 100% rename from my-docs-site/docs/python/recipes/read.md rename to wrangles-docs/docs/python/recipes/read.md diff --git a/my-docs-site/docs/python/recipes/run.md b/wrangles-docs/docs/python/recipes/run.md similarity index 100% rename from my-docs-site/docs/python/recipes/run.md rename to wrangles-docs/docs/python/recipes/run.md diff --git a/my-docs-site/docs/python/recipes/schema.md b/wrangles-docs/docs/python/recipes/schema.md similarity index 100% rename from my-docs-site/docs/python/recipes/schema.md rename to wrangles-docs/docs/python/recipes/schema.md diff --git a/my-docs-site/docs/python/recipes/variables.md b/wrangles-docs/docs/python/recipes/variables.md similarity index 100% rename from my-docs-site/docs/python/recipes/variables.md rename to wrangles-docs/docs/python/recipes/variables.md diff --git a/my-docs-site/docs/python/recipes/wrangles/pandas.md b/wrangles-docs/docs/python/recipes/wrangles/pandas.md similarity index 100% rename from my-docs-site/docs/python/recipes/wrangles/pandas.md rename to wrangles-docs/docs/python/recipes/wrangles/pandas.md diff --git a/my-docs-site/docs/python/recipes/wrangles/standalone.md b/wrangles-docs/docs/python/recipes/wrangles/standalone.md similarity index 100% rename from my-docs-site/docs/python/recipes/wrangles/standalone.md rename to wrangles-docs/docs/python/recipes/wrangles/standalone.md diff --git a/my-docs-site/docs/python/recipes/wrangles/utilities.md b/wrangles-docs/docs/python/recipes/wrangles/utilities.md similarity index 100% rename from my-docs-site/docs/python/recipes/wrangles/utilities.md rename to wrangles-docs/docs/python/recipes/wrangles/utilities.md diff --git a/my-docs-site/docs/python/recipes/write.md b/wrangles-docs/docs/python/recipes/write.md similarity index 100% rename from my-docs-site/docs/python/recipes/write.md rename to wrangles-docs/docs/python/recipes/write.md diff --git a/my-docs-site/docs/test-system-logic.md b/wrangles-docs/docs/test-system-logic.md similarity index 100% rename from my-docs-site/docs/test-system-logic.md rename to wrangles-docs/docs/test-system-logic.md diff --git a/my-docs-site/docs/tutorials/test-page.md b/wrangles-docs/docs/tutorials/test-page.md similarity index 100% rename from my-docs-site/docs/tutorials/test-page.md rename to wrangles-docs/docs/tutorials/test-page.md diff --git a/my-docs-site/docs/waas.md b/wrangles-docs/docs/waas.md similarity index 100% rename from my-docs-site/docs/waas.md rename to wrangles-docs/docs/waas.md diff --git a/my-docs-site/docs/waas/automation.md b/wrangles-docs/docs/waas/automation.md similarity index 100% rename from my-docs-site/docs/waas/automation.md rename to wrangles-docs/docs/waas/automation.md diff --git a/my-docs-site/docs/waas/bespoke.md b/wrangles-docs/docs/waas/bespoke.md similarity index 100% rename from my-docs-site/docs/waas/bespoke.md rename to wrangles-docs/docs/waas/bespoke.md diff --git a/my-docs-site/docusaurus.config.js b/wrangles-docs/docusaurus.config.js similarity index 86% rename from my-docs-site/docusaurus.config.js rename to wrangles-docs/docusaurus.config.js index bbb7859..7ad7e5d 100644 --- a/my-docs-site/docusaurus.config.js +++ b/wrangles-docs/docusaurus.config.js @@ -42,6 +42,16 @@ const config = { ], }), ], + [ + '@docusaurus/plugin-content-docs', + /** @type {import('@docusaurus/plugin-content-docs').Options} */ + ({ + id: 'registryPilot', + path: 'registry-docs', + routeBasePath: 'wrangles', + sidebarPath: './sidebarsRegistry.js', + }), + ], [ '@docusaurus/plugin-content-docs', /** @type {import('@docusaurus/plugin-content-docs').Options} */ @@ -100,6 +110,11 @@ const config = { position: 'left', label: 'Playground', }, + { + to: '/wrangles/', + position: 'left', + label: 'Registry Pilot', + }, ], }, prism: { diff --git a/my-docs-site/package-lock.json b/wrangles-docs/package-lock.json similarity index 99% rename from my-docs-site/package-lock.json rename to wrangles-docs/package-lock.json index e11ca6a..bfa7d27 100644 --- a/my-docs-site/package-lock.json +++ b/wrangles-docs/package-lock.json @@ -1,11 +1,11 @@ { - "name": "docusaurus-internal-docs", + "name": "wrangles-docs", "version": "0.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "docusaurus-internal-docs", + "name": "wrangles-docs", "version": "0.0.0", "dependencies": { "@docusaurus/core": "^3.0.0", diff --git a/my-docs-site/package.json b/wrangles-docs/package.json similarity index 82% rename from my-docs-site/package.json rename to wrangles-docs/package.json index 04c900d..4763690 100644 --- a/my-docs-site/package.json +++ b/wrangles-docs/package.json @@ -1,5 +1,5 @@ { - "name": "docusaurus-internal-docs", + "name": "wrangles-docs", "version": "0.0.0", "private": true, "scripts": { @@ -11,6 +11,11 @@ "swizzle": "docusaurus swizzle", "deploy": "docusaurus deploy", "clear": "docusaurus clear", + "compile:registry": "node ./scripts/compile-registry.cjs", + "bootstrap:registry": "node ./scripts/bootstrap-registry.cjs", + "refresh:registry-bootstrap": "node ./scripts/bootstrap-registry.cjs --refresh-generated", + "check:registry": "node ./scripts/compile-registry.cjs --check", + "prebuild": "npm run compile:registry", "generate:wrangle-catalog": "node ./scripts/generate-wrangle-catalog.cjs", "serve": "docusaurus serve", "sync:wrangle-mappings": "node ./scripts/sync-wrangle-mappings.cjs", diff --git a/wrangles-docs/registry-docs/accordion.md b/wrangles-docs/registry-docs/accordion.md new file mode 100644 index 0000000..9d022ed --- /dev/null +++ b/wrangles-docs/registry-docs/accordion.md @@ -0,0 +1,101 @@ +--- +title: "Accordion" +description: "Apply a series of wrangles to column(s) containing lists. The wrangles will be applied to each element in the list and the results will be returned back as a list." +sidebar_label: "Accordion" +slug: "/accordion" +--- + +# Accordion + +Apply a series of wrangles to column(s) containing lists. The wrangles will be applied to each element in the list and the results will be returned back as a list. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `wrangles` | Yes | array | List of wrangles to apply. | — | +| `input` | Yes | string, integer, array | The column(s) containing the list(s) that the wrangles will be applied to the elements of. | — | +| `output` | No | string, array, null | Output of the wrangles to save back to the dataframe. | `null` | +| `propagate` | No | string, array, null | Limit the column(s) that will be available to the wrangles and replicated for each element. If not specified, all columns will be propogated. This may be useful to limit the memory use for large datasets. | `null` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Apply a series of wrangles to the individual elements of one or more lists. + +## Migrated examples +#### Apply Convert Case to List Elements + +This example applies `convert.case` to each string in a list, where the wrangle would not normally operate on the list as a whole. + +##### Recipe + +```yaml +wrangles: + - accordion: + input: list_column + output: modified_lists + wrangles: + - convert.case: + input: list_column + output: modified_lists + case: upper +``` + +
+ +
+ +##### Input Sample + +| list_column | +| --- | +| ["a", "b", "c"] | +| ["e", "f", "g"] | + +
+ +
+ +##### Output Sample + +| list_column | modified_lists | +| --- | --- | +| ["a", "b", "c"] | ["A", "B", "C"] | +| ["e", "f", "g"] | ["E", "F", "G"] | + +
+ +
+ +## Provenance + +- [WranglesPY accordion implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py) +- [Existing accordion Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/utility/_sources/accordion.md) + +## Registry metadata + +- Registry ID: pending database assignment +- Namespace: root-level runtime key +- Recipe key: `accordion` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.main.accordion` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/batch.md b/wrangles-docs/registry-docs/batch.md new file mode 100644 index 0000000..e67f6ac --- /dev/null +++ b/wrangles-docs/registry-docs/batch.md @@ -0,0 +1,110 @@ +--- +title: "Batch" +description: "Split the data into batches for executing a list of wrangles. Use this in situations such as where the intermediate data is too large to fit in memory." +sidebar_label: "Batch" +slug: "/batch" +--- + +# Batch + +Split the data into batches for executing a list of wrangles. Use this in situations such as where the intermediate data is too large to fit in memory. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `wrangles` | Yes | array | The wrangles to execute on the data. Each series of wrangles will be run against the data in batches of the size defined by batch_size. | — | +| `batch_size` | No | integer | The number of rows to split each batch into. | `1000` | +| `threads` | No | integer | The number of threads to use for parallel processing. Default 1. | `1` | +| `on_error` | No | object, null | A dictionary of column_name: value to return if an error occurs while attempting to run a batch. | `null` | +| `timeout` | No | number, null | The number of seconds to wait for a batch to complete before raising an error. | `null` | +| `use_multiprocessing` | No | boolean | Use process-based workers instead of threads. This is an advanced runtime option. | `false` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Execute a series of wrangles in batches. Batches can run in parallel with `threads` and can provide fallback output when an error occurs. + +## Migrated examples +#### Batch an Extract AI Wrangle + +This example processes product descriptions in batches of two rows. + +##### Recipe + +```yaml +wrangles: + - batch: + batch_size: 2 + threads: 1 + wrangles: + - extract.ai: + api_key: Your OpenAI API key + input: Product Description + output: + Title: + type: string + description: Title of the product +``` + +
+ +
+ +##### Input Sample + +| Product Description | +| --- | +| Sleep better with our Memory Foam Pillow, designed to contour to your head and neck. | +| Stay comfortable and stylish with our Organic Cotton T-Shirt, made from soft, breathable fabric. | +| Keep drinks hot or cold with our Stainless Steel Water Bottle, featuring durable insulation. | +| Enjoy crisp sound and long battery life with our Wireless Bluetooth Earbuds. | + +
+ +
+ +##### Output Sample + +| Product Description | Title | +| --- | --- | +| Sleep better with our Memory Foam Pillow, designed to contour to your head and neck. | Memory Foam Pillow | +| Stay comfortable and stylish with our Organic Cotton T-Shirt, made from soft, breathable fabric. | Organic Cotton T-Shirt | +| Keep drinks hot or cold with our Stainless Steel Water Bottle, featuring durable insulation. | Stainless Steel Water Bottle | +| Enjoy crisp sound and long battery life with our Wireless Bluetooth Earbuds. | Wireless Bluetooth Earbuds | + +
+ +
+ +## Provenance + +- [WranglesPY batch implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py) +- [Existing batch Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/utility/_sources/batch.md) + +## Registry metadata + +- Registry ID: pending database assignment +- Namespace: root-level runtime key +- Recipe key: `batch` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.main.batch` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/classify.md b/wrangles-docs/registry-docs/classify.md new file mode 100644 index 0000000..13ea36a --- /dev/null +++ b/wrangles-docs/registry-docs/classify.md @@ -0,0 +1,96 @@ +--- +title: "Classify" +description: "Run classify wrangles on the specified columns. Requires WrangleWorks Account and Subscription." +sidebar_label: "Classify" +slug: "/classify" +--- + +# Classify + +Run classify wrangles on the specified columns. Requires WrangleWorks Account and Subscription. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of the input column. | — | +| `output` | Yes | string, array | Name of the output column. | — | +| `model_id` | Yes | string | ID of the classification model to be used. | — | +| `include_confidence` | No | boolean | For models that support it, include the confidence level in the output. | — | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | Yes | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Run a custom classification wrangle on the specified column or columns. A classification wrangle must be trained first. + +## Migrated examples +#### Food Type Example + +##### Recipe + +```yaml +wrangles: + - classify: + input: Products + output: Category + model_id: ${model_id} + where: Products = Milk +``` + +
+ +
+ +##### Input Sample + +| Products | +| --- | +| Rice | +| Milk | + +
+ +
+ +##### Output Sample + +| Products | Category | +| --- | --- | +| Rice | | +| Milk | Dairy | + +
+ +
+ +## Provenance + +- [WranglesPY classify implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py) +- [Existing classify Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/ai/_sources/classify.md) + +## Registry metadata + +- Registry ID: `06669ef8-cdd1-42f7-8078-98e0b7a42c30` +- Namespace: root-level runtime key +- Recipe key: `classify` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.main.classify` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/clean-whitespaces.md b/wrangles-docs/registry-docs/clean-whitespaces.md new file mode 100644 index 0000000..415b73f --- /dev/null +++ b/wrangles-docs/registry-docs/clean-whitespaces.md @@ -0,0 +1,93 @@ +--- +title: "Clean Whitespaces" +description: "Condense multiple spaces to a single space and convert special space characters to a standard space." +sidebar_label: "Clean Whitespaces" +slug: "/clean-whitespaces" +--- + +# Clean Whitespaces + +Condense multiple spaces to a single space and convert special space characters to a standard space. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name or list of input columns. | — | +| `output` | No | string, array, null | Name or list of output columns. | `null` | +| `trim` | No | boolean | Whether to trim leading and trailing spaces. Default True. | `true` | +| `remove_literals` | No | boolean | Whether to remove special space characters such as new lines etc. Default True. | `true` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Condense multiple spaces to a single space and convert special space characters to a standard space. + +## Migrated examples +#### Food Type Example + +##### Recipe + +```yaml +wrangles: + - clean_whitespaces: + input: Products +``` + +
+ +
+ +##### Input Sample + +| Products | +| --- | +| `Hello world!` | +| `Hello universe!` | + +
+ +
+ +##### Output Sample + +| Products | +| --- | +| Hello world! | +| Hello universe! | + +
+ +
+ +## Provenance + +- [WranglesPY clean_whitespaces implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py) +- [Existing clean_whitespaces Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/clean-whitespaces.md) + +## Registry metadata + +- Registry ID: `e36e15c4-f0ad-43f8-8555-ef683a8ab892` +- Namespace: root-level runtime key +- Recipe key: `clean_whitespaces` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.main.clean_whitespaces` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/compare/lists.md b/wrangles-docs/registry-docs/compare/lists.md new file mode 100644 index 0000000..910c1fd --- /dev/null +++ b/wrangles-docs/registry-docs/compare/lists.md @@ -0,0 +1,184 @@ +--- +title: "Lists" +description: "Compare multiple lists and return the intersection, difference, or union." +sidebar_label: "Lists" +slug: "/compare/lists" +--- + +# Lists + +Compare multiple lists and return the intersection, difference, or union. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | array | List of input columns containing lists to compare. | — | +| `output` | Yes | string | Name of the output column. | — | +| `method` | No | string; one of: intersection, difference, union | Type of comparison to perform. | `"intersection"` | +| `remove_duplicates` | No | boolean | Remove duplicates from the result. | `false` | +| `ignore_case` | No | boolean | Ignore case when comparing string items. | `false` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Compare multiple lists and return the intersection, difference, or union. + +## Migrated examples +#### Comparing the difference between two columns of lists + +##### Recipe + +```yaml +wrangles: + - compare.lists: + input: + - col1 + - col2 + output: Difference + method: difference +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | +| --- | --- | +| [A, B, C] | [C, D, E] | +| [H, I, J, K] | [H, I, J] | +| [X, Y, Z] | [1, 2, 3] | + +
+ +
+ +##### Output Sample + +| Difference | +| --- | +| [A, B] | +| [K] | +| [X, Y, Z] | + +
+ +
+ +#### Comparing the intersection between two columns of lists + +##### Recipe + +```yaml +wrangles: + - compare.lists: + input: + - col1 + - col2 + output: Intersection + method: intersection +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | +| --- | --- | +| [A, B, C] | [C, D, E] | +| [H, I, J, K] | [H, I, J] | +| [X, Y, Z] | [1, 2, 3] | + +
+ +
+ +##### Output Sample + +| Intersection | +| --- | +| [C] | +| [H, I, J] | +| [] | + +
+ +
+ +#### Comparing the union between two columns of lists + +##### Recipe + +```yaml +wrangles: + - compare.lists: + input: + - col1 + - col2 + output: Union + method: union +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | +| --- | --- | +| [A, B, C] | [C, D, E] | +| [H, I, J, K] | [H, I, J] | +| [X, Y, Z] | [1, 2, 3] | + +
+ +
+ +##### Output Sample + +| Union | +| --- | +| [A, B, C, D, E] | +| [H, I, J, K] | +| [X, Y, Z, 1, 2, 3] | + +
+ +
+ +## Provenance + +- [WranglesPY compare.lists implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/compare.py) +- [Existing compare.lists Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compare/_sources/lists.md) + +## Registry metadata + +- Registry ID: `a393225e-7ccf-4708-83f8-d5abd6ba9b1e` +- Namespace: `compare` +- Recipe key: `compare.lists` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.compare.lists` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/compare/text.md b/wrangles-docs/registry-docs/compare/text.md new file mode 100644 index 0000000..727a9f6 --- /dev/null +++ b/wrangles-docs/registry-docs/compare/text.md @@ -0,0 +1,192 @@ +--- +title: "Text" +description: "Compare two strings and return the intersection or difference, use overlap to find the matching characters between the two strings, or use similarity to get a numeric similarity score." +sidebar_label: "Text" +slug: "/compare/text" +--- + +# Text + +Compare two strings and return the intersection or difference, use overlap to find the matching characters between the two strings, or use similarity to get a numeric similarity score. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | array | The columns to compare. First column is the base column. | — | +| `output` | Yes | string, array | The column to output the results to. Must be a list of two column names [mask_column, ratio_column] when method is overlap and include_ratio is true; otherwise a single column name. | — | +| `method` | No | string; one of: difference, intersection, overlap, similarity | The type of comparison to perform (difference, intersection, overlap, similarity). | `"difference"` | +| `char` | No | string | Character to split strings on for difference and intersection. Defaults to a space. | `" "` | +| `non_match_char` | No | string | Character to use for non-matching characters when using overlap. | `"*"` | +| `include_ratio` | No | boolean | Include the ratio of matching characters when using overlap. | `false` | +| `decimal_places` | No | integer | Number of decimal places to round the overlap ratio to. | `3` | +| `exact_match` | No | string, null | Value to use for exact matches when using overlap. | `null` | +| `empty_a` | No | string, null | Value to use when input A is empty when using overlap. | `null` | +| `empty_b` | No | string, null | Value to use when input B is empty when using overlap. | `null` | +| `all_empty` | No | string, null | Value to use when both inputs are empty when using overlap. | `null` | +| `case_sensitive` | No | boolean | Whether the comparison is case sensitive. Defaults to true. | `false` | +| `metric` | No | string | Metric value accepted by the runtime. | `"token_sort"` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Compare two strings and return the intersection or difference, or use overlap to find the matching characters between the two strings. + +## Migrated examples +#### Comparing the difference between two columns of text + +##### Recipe + +```yaml +wrangles: + - compare.text: + input: + - col1 + - col2 + output: Difference + method: difference +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | +| --- | --- | +| Large Oak Wood White Marble Top Bookshelf | Large Pine Wood Black Marble Bottom Bookshelf | +| Medium Oak Wood White Marble Top Coffee Table | Medium Maple Wood Orange Steel Top Coffee Table | +| Small Oak Wood White Marble Top Console Table | Small Normal Wood Blue Plastic Top Console Table | + +
+ +
+ +##### Output Sample + +| Difference | +| --- | +| Pine Black Bottom | +| Maple Orange Steel | +| Normal Blue Plastic | + +
+ +
+ +#### Comparing the intersection of two columns of text + +##### Recipe + +```yaml +wrangles: + - compare.text: + input: + - col1 + - col2 + output: Intersection + method: intersection +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | +| --- | --- | +| Large Oak Wood White Marble Top Bookshelf | Large Pine Wood Black Marble Bottom Bookshelf | +| Medium Oak Wood White Marble Top Coffee Table | Medium Maple Wood Orange Steel Top Coffee Table | +| Small Oak Wood White Marble Top Console Table | Small Normal Wood Blue Plastic Top Console Table | + +
+ +
+ +##### Output Sample + +| Intersection | +| --- | +| Large Wood Marble Bookshelf | +| Medium Wood Top Coffee Table | +| Small Wood Top Console Table | + +
+ +
+ +#### Comparing the overlap of two columns of text + +##### Recipe + +```yaml +wrangles: + - compare.text: + input: + - Part Code1 + - Part Code2 + output: Overlap + method: overlap +``` + +
+ +
+ +##### Input Sample + +| Part Code1 | Part Code2 | +| --- | --- | +| SKF6202 | TMKN6202 | +| X06-02-000 | X06-81-000 | +| 7100E15-V-230/3 | 7100E15-V-120/1 | + +
+ +
+ +##### Output Sample + +| Overlap | +| --- | +| ****6202 | +| X06-**-000 | +| 7100E15-V-\**0/\* | + +
+ +
+ +## Provenance + +- [WranglesPY compare.text implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/compare.py) +- [Existing compare.text Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compare/_sources/text.md) + +## Registry metadata + +- Registry ID: `31905b74-ce58-45cd-8add-821cc04ab946` +- Namespace: `compare` +- Recipe key: `compare.text` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.compare.text` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/compute/case-when.md b/wrangles-docs/registry-docs/compute/case-when.md new file mode 100644 index 0000000..628a9f2 --- /dev/null +++ b/wrangles-docs/registry-docs/compute/case-when.md @@ -0,0 +1,156 @@ +--- +title: "Case When" +description: "Assign values to a column based on conditional logic." +sidebar_label: "Case When" +slug: "/compute/case-when" +--- + +# Case When + +Assign values to a column based on conditional logic. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `output` | Yes | string | Name of the output column. | — | +| `cases` | Yes | array | List of conditions and corresponding values. | — | +| `default` | No | string, number, integer, boolean, null | Value to assign if no conditions are met. Default None. | `null` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Assign values to a column based on conditional logic. + +## Migrated examples +#### Assigning Letter Grades + +##### Recipe + +```yaml +wrangles: + - compute.case_when: + output: Letter Grade + cases: + - condition: Grade > 89 + value: 'A' + - condition: 90 > Grade > 79 + value: 'B' + - condition: 80 > Grade > 69 + value: 'C' + - condition: 70 > Grade + value: 'F' +``` + +
+ +
+ +##### Input Sample + +| Student | Grade | +| --- | --- | +| Billy | 62 | +| Sarah | 91 | +| Timmy | 88 | +| Tammy | 74 | + +
+ +
+ +##### Output Sample + +| Student | Grade | Letter Grade | +| --- | --- | --- | +| Billy | 62 | F | +| Sarah | 91 | A | +| Timmy | 88 | B | +| Tammy | 74 | C | + +
+ +
+ +#### Assigning Letter Grades with Attendance + +Conditions can be combined so multiple criteria must be met before assigning a value. + +##### Recipe + +```yaml +wrangles: + - compute.case_when: + output: Letter Grade + cases: + - condition: (Grade > .89) & (Attendance == 'Good') + value: 'A' + - condition: (.90 > Grade > .79) & (Attendance == 'Good') + value: 'B' + - condition: (.80 > Grade > .69) & (Attendance == 'Good') + value: 'C' + - condition: (.70 > Grade) or (Attendance == 'Poor') + value: 'F' +``` + +
+ +
+ +##### Input Sample + +| Student | Grade | Attendance | +| --- | --- | --- | +| Billy | 62 | Poor | +| Sarah | 91 | Poor | +| Timmy | 88 | Good | +| Tammy | 74 | Good | + +
+ +
+ +##### Output Sample + +| Student | Grade | Attendance | Letter Grade | +| --- | --- | --- | --- | +| Billy | 62 | Poor | F | +| Sarah | 91 | Poor | F | +| Timmy | 88 | Good | B | +| Tammy | 74 | Good | C | + +
+ +
+ +## Provenance + +- [WranglesPY compute.case_when implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/compute.py) +- [Existing compute.case_when Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compute/_sources/case-when.md) + +## Registry metadata + +- Registry ID: `9a9662e4-53d1-4932-8adf-bc3e7aa364ad` +- Namespace: `compute` +- Recipe key: `compute.case_when` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.compute.case_when` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/compute/score-search-results.md b/wrangles-docs/registry-docs/compute/score-search-results.md new file mode 100644 index 0000000..3616d02 --- /dev/null +++ b/wrangles-docs/registry-docs/compute/score-search-results.md @@ -0,0 +1,114 @@ +--- +title: "Score Search Results" +description: "Scores and filters search results based on progressive partial/exact matching. Can return dictionaries or a parallel list of formatted strings." +sidebar_label: "Score Search Results" +slug: "/compute/score-search-results" +--- + +# Score Search Results + +Scores and filters search results based on progressive partial/exact matching. Can return dictionaries or a parallel list of formatted strings. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | array | List of 3 to 5 columns -> [results, suppliers, part_codes, mpns (optional), descriptions (optional)]. | — | +| `output` | Yes | string, array | Output column for the dictionaries. If a list of 2 is provided, outputs [dicts_column, pretty_strings_column]. | — | +| `must_match_part_code` | No | boolean | If true, filters out results that don't satisfy the allowed match types. | `true` | +| `allow_mpn_exact` | No | boolean | Treat exact MPN matches as valid part code matches. | `true` | +| `allow_mpn_partial` | No | boolean | Treat partial MPN matches as valid part code matches. | `true` | +| `allow_other_exact` | No | boolean | Treat exact other part code matches as valid part code matches. | `true` | +| `allow_other_partial` | No | boolean | Treat partial other part code matches as valid part code matches. | `true` | +| `blacklist_keywords` | No | string | Comma-separated list or array of keywords to filter out URLs containing them. | `""` | +| `mpn_exact_score` | No | number | Mpn Exact Score value accepted by the runtime. | `8` | +| `mpn_partial_base` | No | number | Mpn Partial Base value accepted by the runtime. | `4` | +| `part_code_exact_score` | No | number | Part Code Exact Score value accepted by the runtime. | `6` | +| `part_code_partial_base` | No | number | Part Code Partial Base value accepted by the runtime. | `2` | +| `supplier_exact_score` | No | number | Supplier Exact Score value accepted by the runtime. | `3` | +| `supplier_partial_base` | No | number | Supplier Partial Base value accepted by the runtime. | `1` | +| `context_match_base` | No | number | Context Match Base value accepted by the runtime. | `2` | +| `fuzzy_match_threshold` | No | number | Fuzzy Match Threshold value accepted by the runtime. | `0.8` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Scores and filters search results based on progressive partial/exact matching. Can return dictionaries or a parallel list of formatted strings. + +## Migrated examples +#### Rank Part Search Results + +This template scores search results using supplier and part-code context. The fields added to each result dictionary depend on the scoring configuration. + +##### Recipe + +```yaml +wrangles: + - compute.score_search_results: + input: + - Search Results + - Suppliers + - Part Codes + output: + - Scored Results + allow_other_exact: true + must_match_part_code: true +``` + +
+ +
+ +##### Input Sample + +| Search Results | Suppliers | Part Codes | +| --- | --- | --- | +| `[{"title": "SKF 6202 bearing", "link": "https://example.com/6202"}]` | `["SKF"]` | `["6202"]` | + +
+ +
+ +##### Output Sample + +| Search Results | Suppliers | Part Codes | Scored Results | +| --- | --- | --- | --- | +| `[{"title": "SKF 6202 bearing", "link": "https://example.com/6202"}]` | `["SKF"]` | `["6202"]` | Ranked result dictionaries | + +
+ +
+ +_Template based on the documented parameters; no published source example is currently available._ + +## Provenance + +- [WranglesPY compute.score_search_results implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/compute.py) +- [Existing compute.score_search_results Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compute/_sources/score-search-results.md) + +## Registry metadata + +- Registry ID: `313a8ec0-cf13-4956-8d3b-5362b8641d0f` +- Namespace: `compute` +- Recipe key: `compute.score_search_results` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.compute.score_search_results` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/concurrent.md b/wrangles-docs/registry-docs/concurrent.md new file mode 100644 index 0000000..17e64a2 --- /dev/null +++ b/wrangles-docs/registry-docs/concurrent.md @@ -0,0 +1,102 @@ +--- +title: "Concurrent" +description: "Run multiple wrangles concurrently rather than sequentially. Wrangles must specify output columns to be used concurrently. When using concurrent, Wrangles may not complete in a predictable order and it is not recommended to update overlapping columns with different wrangles." +sidebar_label: "Concurrent" +slug: "/concurrent" +--- + +# Concurrent + +Run multiple wrangles concurrently rather than sequentially. Wrangles must specify output columns to be used concurrently. When using concurrent, Wrangles may not complete in a predictable order and it is not recommended to update overlapping columns with different wrangles. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `wrangles` | Yes | array | The wrangles section of a recipe to execute for each combination of variables. | — | +| `max_concurrency` | No | integer | The maximum number of wrangles to execute in parallel. | `10` | +| `use_multiprocessing` | No | boolean | Use process-based workers instead of threads. This is an advanced runtime option. | `false` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Run multiple wrangles concurrently instead of sequentially. Concurrent wrangles must declare output columns, may finish in any order, and should not update overlapping columns. + +See the [Concurrent connector](/python/connectors/concurrent) for the connector equivalent. + +## Migrated examples +#### Run Extraction Wrangles Concurrently + +##### Recipe + +```yaml +wrangles: + - concurrent: + wrangles: + - extract.codes: + input: Products + output: Part Codes + - extract.attributes: + input: Products + output: Attributes +``` + +
+ +
+ +##### Input Sample + +| Products | +| --- | +| SKF ball brg 2" od 6202 | +| brg seal 1" id 5493 | +| 3lb hammer 87102 | + +
+ +
+ +##### Output Sample + +| Products | Part Codes | Attributes | +| --- | --- | --- | +| SKF ball brg 2" od 6202 | 6202 | `{"length":["2in"]}` | +| brg seal 1" id 5493 | 5493 | `{"length":["1in"]}` | +| 3lb hammer 87102 | 87102 | `{"weight":["3lb"]}` | + +
+ +
+ +## Provenance + +- [WranglesPY concurrent implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py) +- [Existing concurrent Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/utility/_sources/concurrent.md) + +## Registry metadata + +- Registry ID: pending database assignment +- Namespace: root-level runtime key +- Recipe key: `concurrent` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.main.concurrent` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/convert/case.md b/wrangles-docs/registry-docs/convert/case.md new file mode 100644 index 0000000..8eb56c3 --- /dev/null +++ b/wrangles-docs/registry-docs/convert/case.md @@ -0,0 +1,101 @@ +--- +title: "Convert Case" +description: "Change the letter case of text values." +sidebar_label: "Convert Case" +slug: "/convert/case" +--- + +# Convert Case + +Change the letter case of text values. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name, index, or list of input columns. | — | +| `output` | No | string, array | Name or list of output columns. If omitted, each input column is overwritten. | `null` | +| `case` | No | string; one of: lower, upper, title, sentence | Letter case to apply. Sentence case lowercases the value and capitalizes sentence starts. | `"lower"` | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | + +## Verified examples + +### Write uppercase text to a new column + +Verification: `static` + +```yaml +wrangles: + - convert.case: + input: product + output: product_upper + case: upper +``` + +#### Input + +```json +[ + { + "product": "Cordless Drill" + }, + { + "product": "bearing seal" + } +] +``` + +#### Output + +```json +[ + { + "product": "Cordless Drill", + "product_upper": "CORDLESS DRILL" + }, + { + "product": "bearing seal", + "product_upper": "BEARING SEAL" + } +] +``` + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Use `convert.case` to normalize capitalization while keeping the source column +or writing the result to a new column. + +## Behavior + +- Supported modes are `lower`, `upper`, `title`, and `sentence`. +- Omitting `output` overwrites the input column. +- Input and output lists must have equal lengths. +- Non-string values are passed through unchanged and produce a warning. + +## Provenance + +- [WranglesPY convert.case implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/convert.py) +- [Legacy convert.case documentation](https://wrangles.io/python/recipes/wrangles/convert#case) + +## Registry metadata + +- Registry ID: `12ff4120-3613-4801-8653-99c793477fbc` +- Namespace: `convert` +- Recipe key: `convert.case` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.convert.case` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/convert/data-type.md b/wrangles-docs/registry-docs/convert/data-type.md new file mode 100644 index 0000000..a5979f0 --- /dev/null +++ b/wrangles-docs/registry-docs/convert/data-type.md @@ -0,0 +1,105 @@ +--- +title: "Convert Data Type" +description: "Convert values to strings, numbers, booleans, or datetimes." +sidebar_label: "Convert Data Type" +slug: "/convert/data-type" +--- + +# Convert Data Type + +Convert values to strings, numbers, booleans, or datetimes. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name, index, or list of input columns. | — | +| `output` | No | string, array | Name or list of output columns. If omitted, each input column is overwritten. | `null` | +| `data_type` | No | string; one of: str, float, int, bool, datetime | Data type to produce. | `"str"` | +| `default` | No | string, number, array, object, boolean, null | Value returned when conversion fails. If omitted, the original value is retained. | `null` | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | + +## Verified examples + +### Convert quantities to integers with a fallback + +Verification: `static` + +```yaml +wrangles: + - convert.data_type: + input: quantity + output: quantity_integer + data_type: int + default: 0 +``` + +#### Input + +```json +[ + { + "quantity": "12" + }, + { + "quantity": "not available" + } +] +``` + +#### Output + +```json +[ + { + "quantity": "12", + "quantity_integer": 12 + }, + { + "quantity": "not available", + "quantity_integer": 0 + } +] +``` + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Use `convert.data_type` when a recipe needs consistent Python-compatible +values rather than display-only formatting. + +## Behavior + +- Supported target types are `str`, `float`, `int`, `bool`, and `datetime`. +- Omitting `data_type` uses the runtime default `str`. +- Omitting `output` overwrites the input column. +- Failed conversions retain the original value unless `default` is supplied. +- Additional undocumented keyword arguments are implementation details and are + not part of the public Registry contract. + +## Provenance + +- [WranglesPY convert.data_type implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/convert.py) +- [Legacy convert.data_type documentation](https://wrangles.io/python/recipes/wrangles/convert#data-type) + +## Registry metadata + +- Registry ID: `52384f01-7164-404f-8615-063e7677a588` +- Namespace: `convert` +- Recipe key: `convert.data_type` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.convert.data_type` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/convert/fraction-to-decimal.md b/wrangles-docs/registry-docs/convert/fraction-to-decimal.md new file mode 100644 index 0000000..302c0a9 --- /dev/null +++ b/wrangles-docs/registry-docs/convert/fraction-to-decimal.md @@ -0,0 +1,94 @@ +--- +title: "Fraction to Decimal" +description: "Convert fractions to decimals." +sidebar_label: "Fraction to Decimal" +slug: "/convert/fraction-to-decimal" +--- + +# Fraction to Decimal + +Convert fractions to decimals. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of the input column. | — | +| `decimals` | No | integer | Number of decimals to round fraction. | `4` | +| `output` | No | string, array, null | Name of the output colum. | `null` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Convert fractions to decimals. + +## Migrated examples +#### Converting a Column of Fractions to Decimals + +##### Recipe + +```yaml +wrangles: + - convert.fraction_to_decimal: + input: fractions + output: decimals + decimals: 3 +``` + +
+ +
+ +##### Input Sample + +| fractions | +| --- | +| 3/32 | +| 25/64 | + +
+ +
+ +##### Output Sample + +| decimals | +| --- | +| 0.094 | +| 0.391 | + +
+ +
+ +## Provenance + +- [WranglesPY convert.fraction_to_decimal implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/convert.py) +- [Existing convert.fraction_to_decimal Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/convert/_sources/fraction-to-decimal.md) + +## Registry metadata + +- Registry ID: `7c55752e-70ab-4809-8298-c59436127457` +- Namespace: `convert` +- Recipe key: `convert.fraction_to_decimal` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.convert.fraction_to_decimal` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/convert/from-json.md b/wrangles-docs/registry-docs/convert/from-json.md new file mode 100644 index 0000000..18c1619 --- /dev/null +++ b/wrangles-docs/registry-docs/convert/from-json.md @@ -0,0 +1,108 @@ +--- +title: "Convert From JSON" +description: "Parse JSON text into lists, objects, scalars, booleans, or null values." +sidebar_label: "Convert From JSON" +slug: "/convert/from-json" +--- + +# Convert From JSON + +Parse JSON text into lists, objects, scalars, booleans, or null values. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name, index, or list of columns containing valid JSON text. | — | +| `output` | No | string, array | Name or list of output columns. If omitted, each input column is overwritten. | `null` | +| `default` | No | string, number, array, object, boolean, null | Value returned for empty or invalid JSON. A list may supply one fallback per input column. | `null` | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | + +## Verified examples + +### Parse JSON objects and lists + +Verification: `static` + +```yaml +wrangles: + - convert.from_json: + input: attributes_json + output: attributes +``` + +#### Input + +```json +[ + { + "attributes_json": "{\"material\":\"steel\",\"voltage\":18}" + }, + { + "attributes_json": "[\"corded\",\"variable speed\"]" + } +] +``` + +#### Output + +```json +[ + { + "attributes_json": "{\"material\":\"steel\",\"voltage\":18}", + "attributes": { + "material": "steel", + "voltage": 18 + } + }, + { + "attributes_json": "[\"corded\",\"variable speed\"]", + "attributes": [ + "corded", + "variable speed" + ] + } +] +``` + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Use `convert.from_json` when a column contains JSON text that later wrangles +need to treat as structured values. + +## Behavior + +- Each non-fallback value is parsed with Python's JSON parser. +- Omitting `output` overwrites the input column. +- Multiple input columns may share one fallback or use one fallback per input. +- Invalid JSON raises an error unless a non-null fallback is supplied. +- Permissive Python-literal or YAML-like parsing is outside this wrangle's + contract. + +## Provenance + +- [WranglesPY convert.from_json implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/convert.py) +- [Legacy convert.from_json documentation](https://wrangles.io/python/recipes/wrangles/convert#from-json) + +## Registry metadata + +- Registry ID: `e370dfcf-b0fe-4c48-8a52-6f34c47e7978` +- Namespace: `convert` +- Recipe key: `convert.from_json` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.convert.from_json` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/convert/from-yaml.md b/wrangles-docs/registry-docs/convert/from-yaml.md new file mode 100644 index 0000000..92af3e0 --- /dev/null +++ b/wrangles-docs/registry-docs/convert/from-yaml.md @@ -0,0 +1,99 @@ +--- +title: "From YAML" +description: "Convert a YAML representation into an object." +sidebar_label: "From YAML" +slug: "/convert/from-yaml" +--- + +# From YAML + +Convert a YAML representation into an object. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of the input column. | — | +| `output` | No | string, array, null | Name of the output column. If omitted, the input column will be overwritten. | `null` | +| `default` | No | string, array, object, number, boolean, null | Value to return if the row is empty or fails to be parsed as YAML. If input is a list, default may also be a list - either a single value to apply to all columns, or one value per input column. | `null` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Convert a YAML representation into an object. + +## Migrated examples +#### Convert YAML To An Object + +##### Recipe + +```yaml +wrangles: + - convert.from_yaml: + input: column 1 +``` + +
+ +
+ +##### Input Sample + +```yaml +Product Specs: + length: 6 inch + voltage: 24V + weight: 3lb +``` + +
+ +
+ +##### Output Sample + +```python +{ + 'Product Specs': { + 'length': '6 inch', + 'voltage': '24V', + 'weight': '3lb' + } +} +``` + +
+ +
+ +## Provenance + +- [WranglesPY convert.from_yaml implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/convert.py) +- [Existing convert.from_yaml Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/convert/_sources/from-yaml.md) + +## Registry metadata + +- Registry ID: `b1c20004-5f80-41c2-84d2-2d4601a033b5` +- Namespace: `convert` +- Recipe key: `convert.from_yaml` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.convert.from_yaml` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/convert/to-json.md b/wrangles-docs/registry-docs/convert/to-json.md new file mode 100644 index 0000000..44f69a5 --- /dev/null +++ b/wrangles-docs/registry-docs/convert/to-json.md @@ -0,0 +1,95 @@ +--- +title: "To JSON" +description: "Convert an object to a JSON representation." +sidebar_label: "To JSON" +slug: "/convert/to-json" +--- + +# To JSON + +Convert an object to a JSON representation. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of the input column. | — | +| `output` | No | string, array, null | Name of the output column. If omitted, the input column will be overwritten. | `null` | +| `ensure_ascii` | No | boolean | If true, non-ASCII characters will be escaped. Default is false. | `false` | +| `indent` | No | string, integer | If indent is a non-negative integer or string, then JSON array elements and object members will be pretty-printed with that indent level. An indent level of 0, negative, or "" will only insert newlines. None (the default) selects the most compact representation. Using a positive integer indent indents that many spaces per level. If indent is a string (such as '\t'), that string is used to indent each level. | — | +| `sort_keys` | No | boolean | If sort_keys is true (defaults to False), then the output of dictionaries will be sorted by key. | — | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Convert an object to a JSON representation. + +## Migrated examples +#### Convert Text to JSON + +##### Recipe + +```yaml +wrangles: + - convert.to_json: + input: column + output: new column +``` + +
+ +
+ +##### Input Sample + +| column | +| --- | +| `['a', 'python', 'list']` | +| `{'python': 'dict'}` | + +
+ +
+ +##### Output Sample + +| new column | +| --- | +| `["a","python","list"]` | +| `{"python":"dict"}` | + +
+ +
+ +## Provenance + +- [WranglesPY convert.to_json implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/convert.py) +- [Existing convert.to_json Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/convert/_sources/to-json.md) + +## Registry metadata + +- Registry ID: `94e54eb7-2b8c-4047-89d0-fb5d16baf396` +- Namespace: `convert` +- Recipe key: `convert.to_json` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.convert.to_json` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/convert/to-yaml.md b/wrangles-docs/registry-docs/convert/to-yaml.md new file mode 100644 index 0000000..53cd376 --- /dev/null +++ b/wrangles-docs/registry-docs/convert/to-yaml.md @@ -0,0 +1,102 @@ +--- +title: "To YAML" +description: "Convert an object to a YAML representation." +sidebar_label: "To YAML" +slug: "/convert/to-yaml" +--- + +# To YAML + +Convert an object to a YAML representation. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of the input column. | — | +| `output` | No | string, array, null | Name of the output column. If omitted, the input column will be overwritten. | `null` | +| `sort_keys` | No | boolean | If sort_keys is true (default: False), then the output of dictionaries will be sorted by key. | `false` | +| `allow_unicode` | No | boolean | Allow Unicode value accepted by the runtime. | `true` | +| `indent` | No | integer | Specify the number of spaces for indentation to specify nested elements. | — | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Convert an object to a YAML representation. + +## Migrated examples +#### Convert a Dictionary to YAML + +##### Recipe + +```yaml +wrangles: + - convert.to_yaml: + input: column 1 + indent: 2 +``` + +
+ +
+ +##### Input Sample + +```python +{ + 'Product Specs': { + 'length': '6 inch', + 'voltage': '24V', + 'weight': '3lb' + } +} +``` + +
+ +
+ +##### Output Sample + +```yaml +Product Specs: + length: 6 inch + voltage: 24V + weight: 3lb +``` + +
+ +
+ +## Provenance + +- [WranglesPY convert.to_yaml implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/convert.py) +- [Existing convert.to_yaml Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/convert/_sources/to-yaml.md) + +## Registry metadata + +- Registry ID: `4cd6252f-ce47-4a9d-8272-3d87e875b72a` +- Namespace: `convert` +- Recipe key: `convert.to_yaml` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.convert.to_yaml` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/copy.md b/wrangles-docs/registry-docs/copy.md new file mode 100644 index 0000000..082b204 --- /dev/null +++ b/wrangles-docs/registry-docs/copy.md @@ -0,0 +1,128 @@ +--- +title: "Copy" +description: "Make a copy of a column or a list of columns." +sidebar_label: "Copy" +slug: "/copy" +--- + +# Copy + +Make a copy of a column or a list of columns. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | No | string, integer, array, null | Name of the input columns or columns. | `null` | +| `output` | No | string, array, null | Name of the output columns or columns. | `null` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Create a copy of columns in a dataframe. + +## Migrated examples +#### Copying a Column With Input and Output + +##### Recipe + +```yaml +wrangles: + - copy: + input: Product Data + output: Product Data (copy) +``` + +
+ +
+ +##### Input Sample + +| Product Data | +| --- | +| SKF ball brg | +| brg seal | + +
+ +
+ +##### Output Sample + +| Product Data | Product Data (copy) | +| --- | --- | +| SKF ball bearing | SKF ball bearing | +| bearing seal | bearing seal | + +
+ +
+ +#### Copying a Column Express as a Dictionary + +##### Recipe + +```yaml +wrangles: + - copy: + Product Data: Product Data (copy) +``` + +
+ +
+ +##### Input Sample + +| Product Data | +| --- | +| SKF ball brg | +| brg seal | + +
+ +
+ +##### Output Sample + +| Product Data | Product Data (copy) | +| --- | --- | +| SKF ball bearing | SKF ball bearing | +| bearing seal | bearing seal | + +
+ +
+ +## Provenance + +- [WranglesPY copy implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/pandas.py) +- [Existing copy Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/transform/_sources/copy.md) + +## Registry metadata + +- Registry ID: `b002fbdc-92c0-4347-889d-0f4bfeec99fa` +- Namespace: root-level runtime key +- Recipe key: `copy` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.pandas.copy` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/create/bins.md b/wrangles-docs/registry-docs/create/bins.md new file mode 100644 index 0000000..480064a --- /dev/null +++ b/wrangles-docs/registry-docs/create/bins.md @@ -0,0 +1,154 @@ +--- +title: "Bins" +description: "Create a column that groups data into bins." +sidebar_label: "Bins" +slug: "/create/bins" +--- + +# Bins + +Create a column that groups data into bins. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of input column. | — | +| `output` | Yes | string, array | Name of new column. | — | +| `bins` | Yes | integer, array | Defines the number of equal-width bins in the range. | — | +| `labels` | No | string, array, null | Labels for the returned bins. | `null` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Creates a column that segments and sorts data values into bins. `bins` can be an integer or a list. When `bins` is an integer, the input data is split equally into that number of bins. When `bins` is a list, the input data is split based on the list boundaries. + +## Migrated examples +#### Creating Bins With an Integer + +##### Recipe + +```yaml +wrangles: + - create.bins: + input: Data + output: Category + bins: 3 + labels: + - Bad + - Medium + - Good +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Data | Category | +| --- | --- | +| 1 | Bad | +| 7 | Good | +| 5 | Medium | +| 4 | Medium | +| 6 | Good | +| 3 | Bad | + +
+ +
+ +#### Creating Bins With a List + +##### Recipe + +```yaml +wrangles: + - create.bins: + input: Grades + output: Letter Grade + bins: + - 0 + - 60 + - 70 + - 80 + - 90 + - 100 + labels: + - F + - D + - C + - B + - A +``` + +
+ +
+ +##### Input Sample + +| Grade | Student | +| --- | --- | +| 64 | Charles | +| 92 | Sabrina | +| 76 | Edward | +| 84 | Wendy | + +
+ +
+ +##### Output Sample + +| Grade | Student | Letter Grade | +| --- | --- | --- | +| 64 | Charles | D | +| 92 | Sabrina | A | +| 76 | Edward | C | +| 84 | Wendy | B | + +
+ +
+ +## Provenance + +- [WranglesPY create.bins implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py) +- [Existing create.bins Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/bins.md) + +## Registry metadata + +- Registry ID: `232e3ba0-4735-4934-88aa-0163181abb3f` +- Namespace: `create` +- Recipe key: `create.bins` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.create.bins` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/create/column.md b/wrangles-docs/registry-docs/create/column.md new file mode 100644 index 0000000..ec47fc3 --- /dev/null +++ b/wrangles-docs/registry-docs/create/column.md @@ -0,0 +1,182 @@ +--- +title: "Column" +description: "Create column(s) with a user defined value. Defaults to None (empty)." +sidebar_label: "Column" +slug: "/create/column" +--- + +# Column + +Create column(s) with a user defined value. Defaults to None (empty). + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `output` | Yes | string, array | Name or list of names of new columns or column_name: value pairs. | — | +| `value` | No | string, number, object, array, boolean, null | (Optional) Value(s) to add in the new column(s). If using a dictionary in output, value can only be a string. | `null` | +| `value_if_exists` | No | string; one of: existing, coalesce, new | Determines behaviour when the output column already exists. existing (default): leave the column unchanged. coalesce: fill empty/null cells with the new value, keeping non-null cells. new: overwrite the entire column with the new value. | `"existing"` | +| `coalesce_value` | No | string; one of: existing, new | Only used when value_if_exists is coalesce. Determines which side is preferred when both the existing and new values are non-empty. existing (default): keep the existing value, only fill empty/null cells with the new value. new: keep the new value, only fall back to the existing value where the new value is empty/null. | `"existing"` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Create column(s) with a user defined value. Defaults to `None` (empty). If you need to copy an existing column, use the copy wrangle instead. + +## Migrated examples +#### Creating a New Column + +##### Recipe + +```yaml +wrangles: + - create.column: + output: New Column + value: new value # Optional, otherwise empty + where: column > 1 +``` + +
+ +
+ +##### Input Sample + +| column | +| --- | +| 1 | +| 2 | +| 3 | + +
+ +
+ +##### Output Sample + +| column | New Column | +| --- | --- | +| 1 | | +| 2 | new value | +| 3 | new value | + +
+ +
+ +#### Creating Multiple Columns + +##### Recipe + +```yaml +wrangles: + - create.column: + output: + - New Column 1: new value 1 # Optional, otherwise empty + - New Column 2: new value 2 + - New Column 3: new value 1 +``` + +
+ +
+ +##### Input Sample + +| column | +| --- | +| 1 | +| 2 | +| 3 | + +
+ +
+ +##### Output Sample + +| column | New Column 1 | New Column 2 | New Column 3 | +| --- | --- | --- | --- | +| 1 | new value 1 | new value 2 | new value 1 | +| 2 | new value 1 | new value 2 | new value 1 | +| 3 | new value 1 | new value 2 | new value 1 | + +
+ +
+ +#### Creating Columns That Consist of Lists + +##### Recipe + +```yaml +wrangles: + - create.column: + output: + - New Column: + - 4 + - 5 + - 6 +``` + +
+ +
+ +##### Input Sample + +| column | +| --- | +| 1 | +| 2 | +| 3 | + +
+ +
+ +##### Output Sample + +| column | New Column | +| --- | --- | +| 1 | [4, 5, 6] | +| 2 | [4, 5, 6] | +| 3 | [4, 5, 6] | + +
+ +
+ +Columns of empty lists can also be created by passing an empty list (`[]`) as the column value. + +## Provenance + +- [WranglesPY create.column implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py) +- [Existing create.column Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/column.md) + +## Registry metadata + +- Registry ID: `5a18e2c8-ec7c-45f5-88fd-bb5c358a8b40` +- Namespace: `create` +- Recipe key: `create.column` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.create.column` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/create/embeddings.md b/wrangles-docs/registry-docs/create/embeddings.md new file mode 100644 index 0000000..4a65d70 --- /dev/null +++ b/wrangles-docs/registry-docs/create/embeddings.md @@ -0,0 +1,103 @@ +--- +title: "Embeddings" +description: "Create an embedding based on text input." +sidebar_label: "Embeddings" +slug: "/create/embeddings" +--- + +# Embeddings + +Create an embedding based on text input. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string | The column of text to create the embeddings for. | — | +| `api_key` | Yes | string | The API key. | — | +| `output` | No | string, null | The output column the embeddings will be saved as. | `null` | +| `batch_size` | No | integer | The number of rows to submit per individual request. | `100` | +| `threads` | No | integer | The number of requests to submit in parallel. Each request contains the number of rows set as batch_size. | `10` | +| `output_type` | No | string; one of: numpy array, python list | Output the embeddings as a numpy array or a python list Default - python list. | `"python list"` | +| `model` | No | string | The specific model to use to generate the embeddings. | `"text-embedding-3-small"` | +| `retries` | No | integer | The number of times to retry if the request fails. This will apply exponential backoff to help with rate limiting. | `0` | +| `url` | No | string | The endpoint to send embedding requests to. Defaults to the standard endpoint for the resolved provider. Setting a Jina URL without an explicit provider will automatically use Jina's request/response format. | `"https://api.openai.com/v1/embeddings"` | +| `precision` | No | string; one of: float16, float32 | The precision of the embeddings. Default is float32. This should be used with output_type numpy array. | `"float32"` | +| `provider` | No | string, null; one of: openai, jina | Controls the request/response format for the embedding API. When omitted, inferred from url (jina.ai → jina, otherwise openai). Setting provider also sets the default url for that provider, so you only need one of provider or url for standard endpoints. Use both together only when pointing to a custom endpoint that uses a non-default provider's API format (e.g. a Jina-compatible proxy). | `null` | +| `task` | No | string, null; one of: retrieval.query, retrieval.passage, text-matching, classification, separation | The task type for the embedding model. Only applicable for the Jina provider. Selects the appropriate task-specific adapter. | `null` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Create an embedding based on text input. + +## Migrated examples +#### Creating Embeddings + +##### Recipe + +```yaml +wrangles: + - create.embeddings: + input: my_column + api_key: ${my_key} + output: embeddings +``` + +
+ +
+ +##### Input Sample + +| my_column | +| --- | +| angle grinder | +| jig saw | + +
+ +
+ +##### Output Sample + +| my_column | embeddings | +| --- | --- | +| angle grinder | [0.010793785, -0.010007165, 0.0028609, -0.0139...] | +| jig saw | [-0.008975127, 0.009314879, -0.024150735, -0.0...] | + +
+ +
+ +## Provenance + +- [WranglesPY create.embeddings implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py) +- [Existing create.embeddings Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/embeddings.md) + +## Registry metadata + +- Registry ID: `e3518afd-a819-40ec-8b49-eb25690220c1` +- Namespace: `create` +- Recipe key: `create.embeddings` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.create.embeddings` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/create/guid.md b/wrangles-docs/registry-docs/create/guid.md new file mode 100644 index 0000000..f2b6872 --- /dev/null +++ b/wrangles-docs/registry-docs/create/guid.md @@ -0,0 +1,92 @@ +--- +title: "GUID" +description: "Create column(s) with a GUID." +sidebar_label: "GUID" +slug: "/create/guid" +--- + +# GUID + +Create column(s) with a GUID. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `output` | Yes | string, array | Name or list of names of new columns. | — | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Create a column with a GUID (Globally Unique Identifier). + +## Migrated examples +#### Creating a New GUID Column + +##### Recipe + +```yaml +wrangles: + - create.guid: + output: GUID Column + + # OR + + - create.uuid: + output: GUID Column +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| GUID Column | +| --- | +| 9a13b4dd-1993-4bd2-8974-3f9a0f006d86 | +| 1528d918-ecd7-457c-b44d-3d30705696d3 | + +
+ +
+ +## Provenance + +- [WranglesPY create.guid implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py) +- [Existing create.guid Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/guid.md) + +## Registry metadata + +- Registry ID: `cf3aaab2-3d5b-4c9b-826e-7af7510521c9` +- Namespace: `create` +- Recipe key: `create.guid` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.create.guid` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/create/hash.md b/wrangles-docs/registry-docs/create/hash.md new file mode 100644 index 0000000..f241baf --- /dev/null +++ b/wrangles-docs/registry-docs/create/hash.md @@ -0,0 +1,94 @@ +--- +title: "Hash" +description: "Create a hash of a column." +sidebar_label: "Hash" +slug: "/create/hash" +--- + +# Hash + +Create a hash of a column. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of input column. | — | +| `output` | Yes | string, array | Name of new column. | — | +| `method` | No | string; one of: md5, sha1, sha256, sha512 | The method to use to hash the input (Default: md5). | `"md5"` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Create a hash of a column. + +## Migrated examples +#### Creating a New Hash Column + +##### Recipe + +```yaml +wrangles: + - create.hash: + input: Description + output: hash + method: md5 +``` + +
+ +
+ +##### Input Sample + +| Description | +| --- | +| The wrench is blue | +| The hammer is yellow | + +
+ +
+ +##### Output Sample + +| New Column | +| --- | +| ce114e4501d2f4e2dcea3e17b546f339 | +| a54d88e06612d820bc3be72877c74f257b561b19 | + +
+ +
+ +## Provenance + +- [WranglesPY create.hash implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py) +- [Existing create.hash Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/hash.md) + +## Registry metadata + +- Registry ID: `11e8fc13-00d2-4779-8d87-6288b07de7e7` +- Namespace: `create` +- Recipe key: `create.hash` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.create.hash` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/create/index.md b/wrangles-docs/registry-docs/create/index.md new file mode 100644 index 0000000..7640c5c --- /dev/null +++ b/wrangles-docs/registry-docs/create/index.md @@ -0,0 +1,92 @@ +--- +title: "Index" +description: "Create column(s) with an incremental index. e.g. 1,2,3..." +sidebar_label: "Index" +slug: "/create/index" +--- + +# Index + +Create column(s) with an incremental index. e.g. 1,2,3... + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `output` | Yes | string, array | Name or list of names of new columns. | — | +| `start` | No | integer | (Optional; default 1) Starting number for the index. | `1` | +| `step` | No | integer | (Optional; default 1) Step between successive rows. | `1` | +| `by` | No | string, array, null | Optional. Cluster the created indexes by one or more columns. | `null` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Create a new incremental index. + +## Migrated examples +#### Creating a New Index Column + +##### Recipe + +```yaml +wrangles: + - create.index: + output: New Index + start: 1 # optional + step: 1 # optional +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| New Index | +| --- | +| 1 | +| 2 | + +
+ +
+ +## Provenance + +- [WranglesPY create.index implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py) +- [Existing create.index Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/index.md) + +## Registry metadata + +- Registry ID: `0a4909ca-6e14-4da7-8a70-a7fd106d6944` +- Namespace: `create` +- Recipe key: `create.index` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.create.index` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/create/jinja.md b/wrangles-docs/registry-docs/create/jinja.md new file mode 100644 index 0000000..d666439 --- /dev/null +++ b/wrangles-docs/registry-docs/create/jinja.md @@ -0,0 +1,101 @@ +--- +title: "Jinja" +description: "Output text using a jinja template." +sidebar_label: "Jinja" +slug: "/create/jinja" +--- + +# Jinja + +Output text using a jinja template. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `template` | Yes | object | A dictionary which defines the template/location as well as the form which the template is input. If any keys use a space, they must be replaced with an underscore. Note: spaces within column names are replaced by underscores (_). | — | +| `output` | Yes | array | Name of the column to be output to. | — | +| `input` | No | string, null | Specify a name of column containing a dictionary of elements to be used in jinja template. Otherwise, the column headers will be used as keys. | `null` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Makes use of a Jinja template to create a description, title, or summary based on your data. + +:::info +Jinja templates do not allow variables with spaces. This wrangle automatically replaces spaces in column headers with underscores, so use underscores instead of spaces when referencing columns in the template. +::: + +## Migrated examples +#### Creating a Jinja Description + +##### Recipe + +```yaml +wrangles: + - create.jinja: + output: Description + template: + string: | + This is a {{ Brand }} {{ Item_Type }} that is {{ Size }} +``` + +
+ +
+ +##### Input Sample + +| Size | Brand | Item Type | +| --- | --- | --- | +| 10mm | SKF | ball bearing | +| 15mm | Timken | bearing seal | + +
+ +
+ +##### Output Sample + +| Size | Brand | Item Type | Description | +| --- | --- | --- | --- | +| 10mm | SKF | ball bearing | This is a SKF ball bearing that is 10mm | +| 15mm | Timken | bearing seal | This is a Timken bearing seal that is 15mm | + +
+ +
+ +Using `|` in YAML denotes a multi-line string that preserves line breaks. Use `>` for a multi-line string when line breaks should not be preserved. + +## Provenance + +- [WranglesPY create.jinja implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py) +- [Existing create.jinja Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/jinja.md) + +## Registry metadata + +- Registry ID: `10fc6709-16d4-4eab-8f56-6cb5d170ea66` +- Namespace: `create` +- Recipe key: `create.jinja` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.create.jinja` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/create/uuid.md b/wrangles-docs/registry-docs/create/uuid.md new file mode 100644 index 0000000..186706e --- /dev/null +++ b/wrangles-docs/registry-docs/create/uuid.md @@ -0,0 +1,92 @@ +--- +title: "UUID" +description: "Create column(s) with a UUID." +sidebar_label: "UUID" +slug: "/create/uuid" +--- + +# UUID + +Create column(s) with a UUID. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `output` | Yes | string, array | Name or list of names of new columns. | — | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Create a column with a UUID (Universally Unique Identifier). + +## Migrated examples +#### Creating a New GUID Column + +##### Recipe + +```yaml +wrangles: + - create.guid: + output: GUID Column + + # OR + + - create.uuid: + output: GUID Column +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| GUID Column | +| --- | +| 9a13b4dd-1993-4bd2-8974-3f9a0f006d86 | +| 1528d918-ecd7-457c-b44d-3d30705696d3 | + +
+ +
+ +## Provenance + +- [WranglesPY create.uuid implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py) +- [Existing create.uuid Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/uuid.md) + +## Registry metadata + +- Registry ID: `c376f3ff-2283-4c4c-8d7f-70db6f53ed19` +- Namespace: `create` +- Recipe key: `create.uuid` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.create.uuid` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/date-calculator.md b/wrangles-docs/registry-docs/date-calculator.md new file mode 100644 index 0000000..5e85c56 --- /dev/null +++ b/wrangles-docs/registry-docs/date-calculator.md @@ -0,0 +1,96 @@ +--- +title: "Date Calculator" +description: "Add or Subtract time from a date." +sidebar_label: "Date Calculator" +slug: "/date-calculator" +--- + +# Date Calculator + +Add or Subtract time from a date. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string | Name of the dates column. | — | +| `operation` | No | string; one of: add, subtract | Date operation. | `"add"` | +| `output` | No | string, null | Name of the output column of dates. | `null` | +| `time_unit` | No | string, null; one of: years, months, weeks, days, hours, minutes, seconds, milliseconds | Time unit for operation. | `null` | +| `time_value` | No | number, null | Time unit value for operation. | `null` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Add or subtract time from a date. + +## Migrated examples +#### Calculating a Future Date + +##### Recipe + +```yaml +wrangles: + - date_calculator: + input: Date + output: New Date + operation: subtract # Optional default is addition + time_unit: days + time_value: 1 +``` + +
+ +
+ +##### Input Sample + +| Date | +| --- | +| 2022-12-26 | + +
+ +
+ +##### Output Sample + +| New Date | +| --- | +| 2022-12-25 | + +
+ +
+ +## Provenance + +- [WranglesPY date_calculator implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py) +- [Existing date_calculator Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/date/_sources/date-calculator.md) + +## Registry metadata + +- Registry ID: `19cfeb4f-02af-4ab2-895c-0ff2bb5cce19` +- Namespace: root-level runtime key +- Recipe key: `date_calculator` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.main.date_calculator` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/drop.md b/wrangles-docs/registry-docs/drop.md new file mode 100644 index 0000000..3d9ea65 --- /dev/null +++ b/wrangles-docs/registry-docs/drop.md @@ -0,0 +1,89 @@ +--- +title: "Drop" +description: "Drop (Delete) selected column(s)." +sidebar_label: "Drop" +slug: "/drop" +--- + +# Drop + +Drop (Delete) selected column(s). + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `columns` | Yes | string, array | Name of the column(s) to drop. | — | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Drop (Delete) selected column(s) + +## Migrated examples +#### Dropping a Column + +##### Recipe + +```yaml +wrangles: + - drop: + columns: + - Material +``` + +
+ +
+ +##### Input Sample + +| Material | Product Data | +| --- | --- | +| Ceramic | SKF ball brg | +| Rubber | brg seal | + +
+ +
+ +##### Output Sample + +| Product Data | +| --- | +| SKF ball bearing | +| bearing seal | + +
+ +
+ +## Provenance + +- [WranglesPY drop implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/pandas.py) +- [Existing drop Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/drop.md) + +## Registry metadata + +- Registry ID: `363bffbf-397e-4975-8382-e9efa5e9eed6` +- Namespace: root-level runtime key +- Recipe key: `drop` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.pandas.drop` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/explode.md b/wrangles-docs/registry-docs/explode.md new file mode 100644 index 0000000..344865d --- /dev/null +++ b/wrangles-docs/registry-docs/explode.md @@ -0,0 +1,97 @@ +--- +title: "Explode" +description: "Explode a column of lists into rows." +sidebar_label: "Explode" +slug: "/explode" +--- + +# Explode + +Explode a column of lists into rows. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of the column(s) to explode. If multiple columns are included they must contain lists of the same length. | — | +| `reset_index` | No | boolean | Reset the index after exploding. Default True. | `true` | +| `drop_empty` | No | boolean | If true, any rows that contain an empty list will be dropped. If false, rows that contain empty lists will keep 1 row with an empty value. Default False. | `false` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Explode a column of lists into rows + +## Migrated examples +#### Exploding a Column + +##### Recipe + +```yaml +wrangles: + - explode: + input: Products +``` + +
+ +
+ +##### Input Sample + +| Products | Manufacturer | +| --- | --- | +| [Ball Bearing, Bearing Seal] | SKF | +| [Angle Grinder, Drill, Impact Driver] | Milwaukee | +| Solid State Relay | Schneider | + +
+ +
+ +##### Output Sample + +| Products | Manufacturer | +| --- | --- | +| Ball Bearing | SKF | +| Bearing Seal | SKF | +| Angle Grinder | Milwaukee | +| Drill | Milwaukee | +| Impact Driver | Milwaukee | +| Solid State Relay | Schneider | + +
+ +
+ +## Provenance + +- [WranglesPY explode implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/pandas.py) +- [Existing explode Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/split/_sources/explode.md) + +## Registry metadata + +- Registry ID: `4e4b13ac-8d50-4b2c-85c8-2c31de1e817d` +- Namespace: root-level runtime key +- Recipe key: `explode` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.pandas.explode` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/extract/address.md b/wrangles-docs/registry-docs/extract/address.md new file mode 100644 index 0000000..a90e2eb --- /dev/null +++ b/wrangles-docs/registry-docs/extract/address.md @@ -0,0 +1,94 @@ +--- +title: "Address" +description: "Extract parts of addresses. Requires WrangleWorks Account." +sidebar_label: "Address" +slug: "/extract/address" +--- + +# Address + +Extract parts of addresses. Requires WrangleWorks Account. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of the input column. | — | +| `output` | Yes | string, array | Name of the output column. | — | +| `dataType` | Yes | string; one of: streets, cities, regions, countries | Specific part of the address to extract. | — | +| `output_format` | No | string, null; one of: list, columns, concatenate | Format of the extract output. | `null` | +| `char` | No | string | Character to use when output_format is concatenate. | `", "` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | Yes | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Extract geographical information from unstructured text such as streets, cities, or countries. Requires WrangleWorks Account. + +## Migrated examples +#### Extracting Street Name + +##### Recipe + +```yaml +wrangles: + - extract.address: + input: Location + output: Street + dataType: streets + where: SUBSTRING(Location, 1, 3) = '221' +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Street | Location | +| --- | --- | +| ['221 B Baker St.'] | 221 B Baker St., London, England, United Kingdom | +| | London SW1A 1AA, London, England, United Kingdom | + +
+ +
+ +## Provenance + +- [WranglesPY extract.address implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py) +- [Existing extract.address Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/address.md) + +## Registry metadata + +- Registry ID: `44153f95-4581-4cee-898e-b3b4714045fd` +- Namespace: `extract` +- Recipe key: `extract.address` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.extract.address` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/extract/ai.md b/wrangles-docs/registry-docs/extract/ai.md new file mode 100644 index 0000000..8f625e5 --- /dev/null +++ b/wrangles-docs/registry-docs/extract/ai.md @@ -0,0 +1,211 @@ +--- +title: "AI" +description: "Extract structured data from each input row using an AI model. Define the desired fields with output, or reuse a saved definition with model_id." +sidebar_label: "AI" +slug: "/extract/ai" +--- + +# AI + +Extract structured data from each input row using an AI model. Define the desired fields with output, or reuse a saved definition with model_id. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `api_key` | Yes | string | OpenAI API key used for this wrangle, normally supplied through a recipe variable. | — | +| `input` | No | array, null | Input column name, column index, or list of columns supplied together as DATA for each row. If omitted, all dataframe columns are supplied. | `null` | +| `output` | No | string, array, object, null | Desired extraction. Use an object keyed by output column name for structured fields, a string for one prompted value, or an array of field names/definitions. Each field may use the schema options below. | `null` | +| `model_id` | No | string, null | ID of a saved extract.ai definition. Use it instead of defining an output schema. When output is also supplied with model_id in a recipe, output names the destination column or columns for the saved fields. | `null` | +| `record_examples` | No | array, object, null | Whole-record examples. Each example has a separate input value or record and the complete expected output record. Optional name and notes provide model-visible context. Use {name: ..., notes: ..., input: ..., output: ...}. Omitted nullable output fields are completed with null. Required non-null nested properties must be supplied. This differs from examples nested under one output field, which teach only that field. | `null` | +| `output_format` | No | string, null; one of: dictionary, columns, concatenate | How extracted fields are written. columns writes one dataframe column per field (default); dictionary keeps one object; concatenate joins fields into one string using char. | `null` | +| `char` | No | string | Separator used only when output_format is concatenate. Defaults to comma-space. | `", "` | +| `web_search` | No | boolean | Enable OpenAI Responses web search; the model decides when searching helps. When true, every row also receives web_search_sources: a deduplicated list of {title, url} objects in source order, or an empty list when no source was used. This reserved column is automatic. Requires protocol responses. Defaults to false. | `false` | +| `instructions` | No | string, array, null | Additional guidance applied to every input row. Use this for decision rules, evidence priorities, normalization requirements, or other behavior that applies to the complete extraction. | `null` | +| `model` | No | string | OpenAI model ID for this call. If omitted, uses the configured extract.ai default; a saved model definition may supply its own model. | — | +| `threads` | No | integer | Maximum number of row-level requests sent in parallel. The configured default is 32. | — | +| `timeout` | No | number | Maximum seconds for one HTTP attempt. The configured default is 12; deadline can end the overall call sooner. | — | +| `retries` | No | integer | Number of additional attempts after a retryable failure. The configured default is 1. Backoff and request timeouts remain bounded by deadline. | — | +| `url` | No | string | Override the endpoint for the selected protocol. A chat/completions URL selects the legacy protocol only when protocol is omitted; new recipes should use the configured Responses endpoint. | — | +| `provider` | No | string; one of: openai | AI service provider. Currently only OpenAI is supported. | — | +| `protocol` | No | string; one of: responses, chat_completions | OpenAI API protocol. Responses is the configured default and is required for web_search; chat_completions remains available for legacy definitions. | — | +| `deadline` | No | number | Total seconds allowed for the entire wrangle call, including queued work, retries, and backoff. The configured default is 15. | — | +| `store` | No | boolean | Whether OpenAI may store Responses API results. Defaults to false. | — | +| `cache` | No | boolean | Reuse identical successful results from the bounded warm-instance cache. Defaults to true. Set false when fresh model or web results are required. | — | +| `cache_ttl` | No | number | Maximum age in seconds for a cached result used by this call. Applies to extracted values and web_search_sources together. | — | +| `strict` | No | boolean | Require OpenAI structured-output strict mode. Defaults to true. Definitions with dynamic dictionary keys automatically switch to non-strict provider mode and are still validated locally. | — | +| `reasoning` | No | object | Responses API reasoning controls. Set effort for reasoning-capable models. The configured default is none when that model supports it; otherwise the provider default applies. | — | +| `verbosity` | No | string; one of: low, medium, high | Responses API text verbosity for compatible models. Defaults to low when supported; ignored with a warning for incompatible models. | — | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Use AI to extract meaningful structured data. `extract.ai` can be used recipe-first, where the output schema is defined in the recipe, or model-first, where a saved extract.ai model is called by `model_id`. + +:::info +For saved extract.ai models, this is the preferred calling pattern compared with using `extract.custom`. +::: + +## Migrated examples +#### Making Use of Output Parameters + +##### Recipe + +```yaml +wrangles: + - extract.ai: + api_key: Your OpenAI api key + input: Product Specs + output: + Blade Diameter: + type: number + description: The diameter of the blade used, reported in inches. + default: N/A + examples: + - 4.5" + - 8 inch + Max. RPM: + type: number + description: The maximum rotations per minute (rpm). + default: 3600 + examples: + - 3600 max. rpm +``` + +
+ +
+ +##### Input Sample + +| Product Specs | +| --- | +| 18V Cordless 4.5in angle grinder | +| 120V 12in chop saw 3600 max. rpm | + +
+ +
+ +##### Output Sample + +| Blade Diameter | Max. RPM | +| --- | --- | +| 4.5 inches | | +| 12 inches | 3600 | + +
+ +
+ +#### Description Only + +##### Recipe + +```yaml +wrangles: + - extract.ai: + api_key: Your OpenAI api key + input: Product Specs + output: + Blade Diameter: The diameter of the blade used, reported in inches. + Max. RPM: The maximum rotations per minute (rpm). +``` + +
+ +
+ +##### Input Sample + +| Product Specs | +| --- | +| 18V Cordless 4.5in angle grinder | +| 120V 12in chop saw 3600 max. rpm | + +
+ +
+ +##### Output Sample + +| Blade Diameter | Max. RPM | +| --- | --- | +| 4.5 inches | | +| 12 inches | 3600 | + +
+ +
+ +#### Model Based Column Output by Name + +##### Recipe + +```yaml +wrangles: + - extract.ai: + api_key: Your OpenAI api key + model_id: xxxx-xxxx-xxxxxxxx + output: + - Colors + - Sizes +``` + +
+ +
+ +##### Input Sample + +| Items | +| --- | +| Large yellow square | +| Medium orange triangle | + +
+ +
+ +##### Output Sample + +| Colors | Sizes | +| --- | --- | +| [yellow] | Large | +| [orange] | Medium | + +
+ +
+ +## Provenance + +- [WranglesPY extract.ai implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py) +- [Existing extract.ai Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/ai.md) + +## Registry metadata + +- Registry ID: `d9f89b00-fda3-4f4c-826c-6417b9390607` +- Namespace: `extract` +- Recipe key: `extract.ai` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.extract.ai` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/extract/attributes.md b/wrangles-docs/registry-docs/extract/attributes.md new file mode 100644 index 0000000..00bdf97 --- /dev/null +++ b/wrangles-docs/registry-docs/extract/attributes.md @@ -0,0 +1,163 @@ +--- +title: "Attributes" +description: "Extract numeric attributes from the input such as weights or lengths. Requires WrangleWorks Account." +sidebar_label: "Attributes" +slug: "/extract/attributes" +--- + +# Attributes + +Extract numeric attributes from the input such as weights or lengths. Requires WrangleWorks Account. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of the input column. | — | +| `output` | Yes | string, array | Name of the output column. | — | +| `responseContent` | No | string; one of: span, object | Span - returns the text found. object - returns an object with the value and unit. | `"span"` | +| `attribute_type` | No | string, null; one of: angle, area, capacitance, charge, current, data transfer rate, electrical conductance, electrical resistance, energy, force, frequency, inductance, instance frequency, length, luminous flux, weight, power, pressure, speed, velocity, temperature, time, voltage, volume, volumetric flow | Request only a specific type of attribute. | `null` | +| `desired_unit` | No | string, null | Convert the extracted unit to the desired unit. | `null` | +| `bound` | No | string; one of: min, mid, max | When returning an object, if the input is a range (e.g. 10-20mm) set the value to return. min, mid or max. Default mid. | `"mid"` | +| `first_element` | No | boolean | Get the first element from results. | `false` | +| `output_format` | No | string, null; one of: list, dictionary, columns, concatenate | Format of the extract output. | `null` | +| `char` | No | string | Character to use when output_format is concatenate. | `", "` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | Yes | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Extract numeric attributes from unstructured text such as lengths, voltages, weights, or temperatures. Requires WrangleWorks Account. + +## Migrated examples +#### Extracting All Attributes + +##### Recipe + +```yaml +wrangles: + - extract.attributes: + input: tools + output: attributes + responseContent: span +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Tools (input) | Attributes (span )(output) | +| --- | --- | +| hammer 5kg, 0.5m | \{'length': ['0.5m'], 'mass': ['5kg']\} | + +
+ +
+ +#### Extracting All Attributes + +##### Recipe + +```yaml +wrangles: + - extract.attributes: + input: tools + output: attributes + responseContent: object +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Tools (input) | Attributes (Object) (output) | +| --- | --- | +| hammer 5kg, 0.5m | \{'length': [\{'unit': 'metre', 'value': 0.5\}], 'mass': [\{'unit': 'kilogram', 'value': 5.0\}]\} | + +
+ +
+ +#### Extracting Specific Attributes + +##### Recipe + +```yaml +wrangles: + - extract.attributes: + input: Tools + output: attributes + responseContent: span + attribute_type: mass # Specific attributes +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +_No sample available._ + +
+ +
+ +## Provenance + +- [WranglesPY extract.attributes implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py) +- [Existing extract.attributes Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/attributes.md) + +## Registry metadata + +- Registry ID: `03ccedef-c938-41f1-8980-280f1a91542e` +- Namespace: `extract` +- Recipe key: `extract.attributes` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.extract.attributes` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/extract/brackets.md b/wrangles-docs/registry-docs/extract/brackets.md new file mode 100644 index 0000000..f30b554 --- /dev/null +++ b/wrangles-docs/registry-docs/extract/brackets.md @@ -0,0 +1,95 @@ +--- +title: "Brackets" +description: "Extract text properties in brackets from the input." +sidebar_label: "Brackets" +slug: "/extract/brackets" +--- + +# Brackets + +Extract text properties in brackets from the input. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of the input column. | — | +| `output` | Yes | string, array | Name of the output columns. | — | +| `find` | No | string, array | (Optional) The type of brackets to find (round '()', square '[]', curly '{}', angled '<>'). Default is all brackets. | `"all"` | +| `include_brackets` | No | boolean | (Optional) Include the brackets in the output. | `false` | +| `output_format` | No | string, null; one of: list, columns, concatenate | Format of the extract output. | `null` | +| `char` | No | string | Character to use when output_format is concatenate. | `", "` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Extract text in brackets from the input. + +## Migrated examples +#### Extracting Data Within Brackets + +##### Recipe + +```yaml +wrangles: + - extract.brackets: + input: Data + output: Output +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Data | Output | +| --- | --- | +| `{Hello}` | Hello | +| `[Wrangles]` | Wrangles | +| `(!)` | ! | +| `` | ! | + +
+ +
+ +## Provenance + +- [WranglesPY extract.brackets implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py) +- [Existing extract.brackets Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/brackets.md) + +## Registry metadata + +- Registry ID: `9b4c15fa-2aaa-40c8-8834-6e835760bee5` +- Namespace: `extract` +- Recipe key: `extract.brackets` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.extract.brackets` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/extract/codes.md b/wrangles-docs/registry-docs/extract/codes.md new file mode 100644 index 0000000..f60d3fb --- /dev/null +++ b/wrangles-docs/registry-docs/extract/codes.md @@ -0,0 +1,135 @@ +--- +title: "Codes" +description: "Extract alphanumeric codes from the input. Requires WrangleWorks Account." +sidebar_label: "Codes" +slug: "/extract/codes" +--- + +# Codes + +Extract alphanumeric codes from the input. Requires WrangleWorks Account. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name or list of input columns. | — | +| `output` | Yes | string, array | Name or list of output columns. | — | +| `first_element` | No | boolean | Get the first element from results. | `false` | +| `output_format` | No | string, null; one of: list, columns, concatenate | Format of the extract output. | `null` | +| `char` | No | string | Character to use when output_format is concatenate. | `", "` | +| `min_length` | No | integer, string | Minimum length of allowed results. | — | +| `max_length` | No | integer, string | Maximum length of allowed results. | — | +| `strategy` | No | string; one of: lenient, balanced, strict | Controls filtering of likely false positives such as measurements. Lenient skips this filter; balanced and strict currently apply the same filter. Default is balanced. Unless min_length is provided, minimum lengths default to 3 for lenient, 4 for balanced, and 5 for strict. | — | +| `sort_order` | No | string; one of: input, longest, shortest | Default is input order. Also allows longest or shortest. | — | +| `disallowed_patterns` | No | string | A pattern or JSON array of regex patterns to not include in the found codes. | — | +| `include_multi_part_tokens` | No | boolean | Whether to include multi-part tokens that have a space. Default True. | — | +| `extract_raw` | No | boolean | Whether to return tokens with their adjacent non-whitespace characters included, rather than the cleaned token. Default False. | — | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | Yes | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Extract alphanumeric codes from unstructured text. Can be performed on one column or multiple columns. Requires WrangleWorks Account. + +## Migrated examples +#### Extracting Codes From Single Column + +##### Recipe + +```yaml +# One column input +wrangles: + - extract.codes: + input: Secret + output: Code Extract +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Secret | Code Extract | +| --- | --- | +| to gain access use Z1ON0101 | ['Z1ON0101'] | + +
+ +
+ +#### Extracting Codes From Multiple Columns + +##### Recipe + +```yaml +# Multi column input +wrangles: + - extract.codes: + input: + - code1 + - code2 + output: Codes +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Codes | code1 | code2 | +| --- | --- | --- | +| ['CH465517080-1', 'CH465517080-2'] | code CH465517080-1 | code CH465517080-2 | + +
+ +
+ +## Provenance + +- [WranglesPY extract.codes implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py) +- [Existing extract.codes Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/codes.md) + +## Registry metadata + +- Registry ID: `da591387-0fca-4842-8bcb-d19f561f0292` +- Namespace: `extract` +- Recipe key: `extract.codes` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.extract.codes` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/extract/custom.md b/wrangles-docs/registry-docs/extract/custom.md new file mode 100644 index 0000000..1c62782 --- /dev/null +++ b/wrangles-docs/registry-docs/extract/custom.md @@ -0,0 +1,184 @@ +--- +title: "Custom" +description: "Extract data from the input using a DIY or bespoke extraction wrangle. Requires WrangleWorks Account and Subscription." +sidebar_label: "Custom" +slug: "/extract/custom" +--- + +# Custom + +Extract data from the input using a DIY or bespoke extraction wrangle. Requires WrangleWorks Account and Subscription. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name or list of input columns. | — | +| `model_id` | Yes | string, array | The ID of the wrangle to use. | — | +| `output` | No | string, array, null | Name or list of output columns. | `null` | +| `use_labels` | No | boolean | Use Labels in the extract output {label: value}. | `false` | +| `first_element` | No | boolean | Get the first element from results. | `false` | +| `case_sensitive` | No | boolean | Allows the wrangle to be case sensitive if set to True, default is False. | `false` | +| `extract_raw` | No | boolean | Extract the raw data from the wrangle. | `false` | +| `use_spellcheck` | No | boolean | Use spellcheck to also find minor mispellings compared to the reference data. | `false` | +| `include_empty_labels` | No | boolean | Include labels with no found values in the output when using use_labels=True. | `true` | +| `sort` | No | string; one of: training_order, input_order, longest, shortest, alphabetical, reverse_alphabetical, ascending, descending | Sort the results. | `"training_order"` | +| `output_format` | No | string, null; one of: list, dictionary, columns, concatenate | Format of the extract output. | `null` | +| `char` | No | string | Character to use when output_format is concatenate. | `", "` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | Yes | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Extract data from the input using a DIY or bespoke extraction wrangle. Can be performed on one column or multiple columns. Requires WrangleWorks Account and Subscription. + +:::info +Non-regex pattern matching extracts whole-word matches separated by word boundaries. Word boundaries include anything that is not a letter, number, or underscore. +::: + +## Migrated examples +#### Extracting Wood Types From Single Column + +##### Recipe + +```yaml +# One column input +wrangles: + - extract.custom: + input: Product + output: Wood Types + model_id: model_id_here +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Product | Wood Types | +| --- | --- | +| Dining Oakwood Chair | Oakwood | +| Living Room Teakwood Frame Mirror | Teakwood | + +
+ +
+ +#### Extracting Wood Types From Multiple Columns + +##### Recipe + +```yaml +# Multi column input +wrangles: + - extract.custom: + input: + - Part 1 of 2 + - Part 2 of 2 + output: Wood Types + model_id: model_id_here +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Wood Types | Part 1 of 2 | Part 2 of 2 | +| --- | --- | --- | +| ['Acacia Wood', 'Imitation Wood'] | Dining Acacia Wood Table | Imitation Wood Table Chairs | + +
+ +
+ +#### Using Multiple Extract Models + +##### Recipe + +```yaml +# Multiple Models +wrangles: + - extract.custom: + input: + - Product + - Product + output: + - Wood Types + - Item Type + model_id: + - wood_Type_model_id + - item_type_model_id +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Product | Item Type | Wood Types | +| --- | --- | --- | +| Dining Oakwood Chair | Chair | Oakwood | +| Living Room Teakwood Frame Mirror | Mirror | Teakwood | + +
+ +
+ +## Provenance + +- [WranglesPY extract.custom implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py) +- [Existing extract.custom Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/custom.md) + +## Registry metadata + +- Registry ID: `e8e96b76-86bf-41dc-8d16-825dcff9688b` +- Namespace: `extract` +- Recipe key: `extract.custom` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.extract.custom` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/extract/date-properties.md b/wrangles-docs/registry-docs/extract/date-properties.md new file mode 100644 index 0000000..ad87f6a --- /dev/null +++ b/wrangles-docs/registry-docs/extract/date-properties.md @@ -0,0 +1,90 @@ +--- +title: "Date Properties" +description: "Extract date properties from a date (day, month, year, etc...)." +sidebar_label: "Date Properties" +slug: "/extract/date-properties" +--- + +# Date Properties + +Extract date properties from a date (day, month, year, etc...). + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of the input column. | — | +| `property` | Yes | string; one of: day, day_of_year, month, month_name, weekday, week_day_name, week_year, quarter | Property to extract from date. | — | +| `output` | No | string, null | Name of the output columns. | `null` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Extract date properties from a date, such as day, month, year, weekday, or quarter. + +## Migrated examples +#### Extracting Month From Date + +##### Recipe + +```yaml +wrangles: + - extract.date_properties: + input: Date + output: Output + property: month_name +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Date | Output | +| --- | --- | +| 1992-08-13 00:00:00 | August | + +
+ +
+ +## Provenance + +- [WranglesPY extract.date_properties implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py) +- [Existing extract.date_properties Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/date-properties.md) + +## Registry metadata + +- Registry ID: `a346de62-93cd-44ba-8d30-a6305629c6d7` +- Namespace: `extract` +- Recipe key: `extract.date_properties` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.extract.date_properties` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/extract/date-range.md b/wrangles-docs/registry-docs/extract/date-range.md new file mode 100644 index 0000000..6185d27 --- /dev/null +++ b/wrangles-docs/registry-docs/extract/date-range.md @@ -0,0 +1,92 @@ +--- +title: "Date Range" +description: "Extract date range frequency from two dates." +sidebar_label: "Date Range" +slug: "/extract/date-range" +--- + +# Date Range + +Extract date range frequency from two dates. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `start_time` | Yes | string | Name of the start date column. | — | +| `end_time` | Yes | string | Name of the end date column. | — | +| `output` | Yes | string | Name of the output column. | — | +| `range` | No | string; one of: business days, days, weeks, months, semi months, business month ends, month starts, semi month starts, business month starts, quarters, quarter starts, years, business hours, hours, minutes, seconds, milliseconds | Type of frequency to count. | `"day"` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Extract date range frequency from two dates. + +## Migrated examples +#### Extracting Number of Months From Range + +##### Recipe + +```yaml +wrangles: + - extract.date_range: + start_time: Start + end_time: End + output: Output + range: months +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| End | Start | Output | +| --- | --- | --- | +| 2023-08-13 00:00:00 | 1992-08-13 00:00:00 | 371 | + +
+ +
+ +## Provenance + +- [WranglesPY extract.date_range implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py) +- [Existing extract.date_range Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/date-range.md) + +## Registry metadata + +- Registry ID: `9cebfa6f-a524-4aec-84a7-02d77b792843` +- Namespace: `extract` +- Recipe key: `extract.date_range` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.extract.date_range` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/extract/html.md b/wrangles-docs/registry-docs/extract/html.md new file mode 100644 index 0000000..4459cea --- /dev/null +++ b/wrangles-docs/registry-docs/extract/html.md @@ -0,0 +1,126 @@ +--- +title: "HTML" +description: "Extract elements from strings containing html. Requires WrangleWorks Account." +sidebar_label: "HTML" +slug: "/extract/html" +--- + +# HTML + +Extract elements from strings containing html. Requires WrangleWorks Account. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name or list of input columns. | — | +| `data_type` | Yes | string; one of: text, links | The type of data to extract. | — | +| `output` | No | string, array, null | Name or list of output columns. | `null` | +| `output_format` | No | string, null; one of: list, columns, concatenate | Format of the extract output. | `null` | +| `char` | No | string | Character to use when output_format is concatenate. | `", "` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | Yes | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Extract text and links from HTML elements. Requires WrangleWorks Account. + +## Migrated examples +#### Extracting Text From HTML + +##### Recipe + +```yaml +wrangles: + - extract.html: + input: HTML + output: Text + data_type: text +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| HTML | Text | +| --- | --- | +| ` | | + +
+ +
+ +#### Extracting Links From HTML + +##### Recipe + +```yaml +wrangles: + - extract.html: + input: HTML + output: Links + data_type: links +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| HTML | Links | +| --- | --- | +| ` | | + +
+ +
+ +## Provenance + +- [WranglesPY extract.html implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py) +- [Existing extract.html Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/html.md) + +## Registry metadata + +- Registry ID: `728fc87a-a20d-4efa-833a-612e0b5eadc3` +- Namespace: `extract` +- Recipe key: `extract.html` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.extract.html` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/extract/properties.md b/wrangles-docs/registry-docs/extract/properties.md new file mode 100644 index 0000000..46bfa27 --- /dev/null +++ b/wrangles-docs/registry-docs/extract/properties.md @@ -0,0 +1,129 @@ +--- +title: "Properties" +description: "Extract text properties from the input. Requires WrangleWorks Account." +sidebar_label: "Properties" +slug: "/extract/properties" +--- + +# Properties + +Extract text properties from the input. Requires WrangleWorks Account. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of the input column. | — | +| `output` | Yes | string, array | Name of the output columns. | — | +| `property_type` | No | string, null; one of: Colours, Materials, Shapes, Standards | The specific type of properties to extract. | `null` | +| `return_data_type` | No | string; one of: list, string | Legacy format option. Prefer output_format. | `"list"` | +| `first_element` | No | boolean | Get the first element from results. | `false` | +| `output_format` | No | string, null; one of: list, dictionary, columns, concatenate | Format of the extract output. | `null` | +| `char` | No | string | Character to use when output_format is concatenate. | `", "` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | Yes | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Extract categorical properties from unstructured text, such as colours or materials. Requires WrangleWorks Account. + +## Migrated examples +#### Extracting All Properties + +##### Recipe + +```yaml +wrangles: + - extract.properties: + input: water bottles + output: properties +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Products | Product Properties | +| --- | --- | +| Stainless Steel Blue Bottle | \{'Colours': ['Blue'], 'Materials': ['Stainless Steel']\} | +| Plastic Yellow Bottle | \{'Colours': ['Yellow'], 'Materials': ['Plastic']\} | + +
+ +
+ +#### Extracting Colour + +##### Recipe + +```yaml +wrangles: + - extract.properties: + input: water bottles + output: properties + property_type: colours # Optional +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Products | Product Colours | +| --- | --- | +| Stainless Steel Blue Bottle | ['Blue'] | +| Plastic Yellow Bottle | ['Yellow'] | + +
+ +
+ +## Provenance + +- [WranglesPY extract.properties implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py) +- [Existing extract.properties Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/properties.md) + +## Registry metadata + +- Registry ID: `23bbdb86-fd13-4b78-8fff-a7a76769ab63` +- Namespace: `extract` +- Recipe key: `extract.properties` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.extract.properties` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/extract/regex.md b/wrangles-docs/registry-docs/extract/regex.md new file mode 100644 index 0000000..fb9d977 --- /dev/null +++ b/wrangles-docs/registry-docs/extract/regex.md @@ -0,0 +1,131 @@ +--- +title: "Regex" +description: "Extract matches or specific capture groups using regex." +sidebar_label: "Regex" +slug: "/extract/regex" +--- + +# Regex + +Extract matches or specific capture groups using regex. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of the input column(s). | — | +| `find` | Yes | string | Pattern to find using regex. | — | +| `output` | Yes | string, array | Name of the output column(s). | — | +| `output_pattern` | No | string, null | Specifies the format to output matches and specific capture groups using backreferences (e.g., `\1`, `\2`). Default is to return entire matches. **Example**: For a regex pattern `r'(\d+)\s(\w+)'` and `output_pattern = '\2 \1'`, with input `'120 volt'`, the output would be `'volt 120'`. | `null` | +| `first_element` | No | boolean | Get the first element from results. | `false` | +| `output_format` | No | string, null; one of: list, columns, concatenate | Format of the extract output. | `null` | +| `char` | No | string | Character to use when output_format is concatenate. | `", "` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Extract single values, matches, or specific capture groups using regex. + +## Migrated examples +#### Extracting Number of Months From Range + +##### Recipe + +```yaml +wrangles: + - extract.regex: + input: Product + output: GPM + find: \d\.?\d? ?gpm +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| GPM | Product | +| --- | --- | +| 3.4 gpm | 3.4 gpm water pump | +| 2gpm | 2gpm water pump | + +
+ +
+ +#### Implementing output_pattern + +##### Recipe + +```yaml +wrangles: + - extract.regex: + input: Product + output: GPM + find: (\d\.?\d?) ?gpm + output_pattern: \1 Gallons Per Minute +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| GPM | Product | +| --- | --- | +| 3.4 Gallons Per Minute | 3.4 gpm water pump for 5.5 gallon tank | +| 2 Gallons Per Minute | 2gpm water pump for 2 gal tank | + +
+ +
+ +## Provenance + +- [WranglesPY extract.regex implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py) +- [Existing extract.regex Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/regex.md) + +## Registry metadata + +- Registry ID: `9aa0253a-4b70-4737-832c-964e15967289` +- Namespace: `extract` +- Recipe key: `extract.regex` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.extract.regex` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/filter.md b/wrangles-docs/registry-docs/filter.md new file mode 100644 index 0000000..63379d8 --- /dev/null +++ b/wrangles-docs/registry-docs/filter.md @@ -0,0 +1,107 @@ +--- +title: "Filter" +description: "Filter the dataframe based on the contents. If multiple filters are specified, all must be correct. For complex filters, use the where parameter." +sidebar_label: "Filter" +slug: "/filter" +--- + +# Filter + +Filter the dataframe based on the contents. If multiple filters are specified, all must be correct. For complex filters, use the where parameter. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | No | string, integer, array | Name of the column to filter on. If multiple are provided, all must match the criteria. | `[]` | +| `equal` | No | string, array, null | Select rows where the values equal a given value. | `null` | +| `not_equal` | No | string, array, null | Select rows where the values do not equal a given value. | `null` | +| `is_in` | No | string, array, null | Select rows where the values are in a given list. | `null` | +| `not_in` | No | string, array, null | Select rows where the values are not in a given list. | `null` | +| `greater_than` | No | integer, number, null | Select rows where the values are greater than a specified value. Does include the value itself. | `null` | +| `greater_than_equal_to` | No | integer, number, null | Select rows where the values are greater than a specified value. Does include the value itself. | `null` | +| `less_than` | No | integer, number, null | Select rows where the values are less than a specified value. Does not include the value itself. | `null` | +| `less_than_equal_to` | No | integer, number, null | Select rows where the values are less than a specified value. Does include the value itself. | `null` | +| `between` | No | array, null | Value or list of values to filter that are in between two parameter values. | `null` | +| `contains` | No | string, null | Select rows where the input contains the value. Allows regular expressions. | `null` | +| `not_contains` | No | string, null | Select rows where the input does not contain the value. Allows regular expressions. | `null` | +| `is_null` | No | boolean, null | If true, select all rows where the value is NULL. If false, where is not NULL. | `null` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Filter the dataframe based on the contents. + +## Migrated examples +#### Filtering a Column + +##### Recipe + +```yaml +wrangles: + # Select only red fruits + - filter: + input: Color + equal: + - red +``` + +
+ +
+ +##### Input Sample + +| Color | Fruit | +| --- | --- | +| red | Apple | +| green | Apple | +| orange | Orange | +| red | Strawberry | + +
+ +
+ +##### Output Sample + +| Color | Fruit | +| --- | --- | +| red | Apple | +| red | Strawberry | + +
+ +
+ +## Provenance + +- [WranglesPY filter implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py) +- [Existing filter Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/filter.md) + +## Registry metadata + +- Registry ID: `e3242acf-d204-433f-8373-205b77481131` +- Namespace: root-level runtime key +- Recipe key: `filter` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.main.filter` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/format/dates.md b/wrangles-docs/registry-docs/format/dates.md new file mode 100644 index 0000000..b97fde7 --- /dev/null +++ b/wrangles-docs/registry-docs/format/dates.md @@ -0,0 +1,92 @@ +--- +title: "Dates" +description: "Format a date." +sidebar_label: "Dates" +slug: "/format/dates" +--- + +# Dates + +Format a date. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of the input column. | — | +| `format` | Yes | string | String pattern to format date. | — | +| `output` | No | string, array, null | Name of the output column. | `null` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Format a date into the desired pattern. + +## Migrated examples +#### Changing The Format of a Date + +##### Recipe + +```yaml +wrangles: + - format.dates: + input: Date + output: Output Format + format: '%Y-%m-%d' # must be wrapped by quotes " or ' +``` + +
+ +
+ +##### Input Sample + +| Date | +| --- | +| 6/23/1912 | + +
+ +
+ +##### Output Sample + +| Date | Output Format | +| --- | --- | +| 6/23/1912 | 1912-06-23 | + +
+ +
+ +## Provenance + +- [WranglesPY format.dates implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py) +- [Existing format.dates Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/dates.md) + +## Registry metadata + +- Registry ID: `a3c15135-4f7a-4659-83fd-f657afa603c9` +- Namespace: `format` +- Recipe key: `format.dates` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.format.dates` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/format/pad.md b/wrangles-docs/registry-docs/format/pad.md new file mode 100644 index 0000000..2a51ae0 --- /dev/null +++ b/wrangles-docs/registry-docs/format/pad.md @@ -0,0 +1,102 @@ +--- +title: "Pad" +description: "Pad a string to a fixed length." +sidebar_label: "Pad" +slug: "/format/pad" +--- + +# Pad + +Pad a string to a fixed length. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of the input column. | — | +| `pad_length` | Yes | integer | Length for the output. | — | +| `side` | Yes | string | Side from which to fill resulting string. | — | +| `char` | Yes | string | The character to pad the input with. | — | +| `output` | No | string, array, null | Name of the output column. | `null` | +| `skip_empty` | No | boolean | If true, skip padding for empty or whitespace-only values. | `false` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Pad a string to a fixed length + +## Migrated examples +#### Adding Dashes to Part Numbers + +##### Recipe + +```yaml +wrangles: + - format.pad: + input: Part Number + pad_length: 5 + side: left + char: "-" +``` + +
+ +
+ +##### Input Sample + +| Part Number | +| --- | +| 0458 | +| 396 | +| 84 | +| 98516 | + +
+ +
+ +##### Output Sample + +| Part Number | +| --- | +| -0458 | +| --396 | +| ---84 | +| 98516 | + +
+ +
+ +## Provenance + +- [WranglesPY format.pad implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py) +- [Existing format.pad Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/pad.md) + +## Registry metadata + +- Registry ID: `76c19378-38f4-45aa-85d1-3cdf8f8aae29` +- Namespace: `format` +- Recipe key: `format.pad` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.format.pad` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/format/prefix.md b/wrangles-docs/registry-docs/format/prefix.md new file mode 100644 index 0000000..63f1afc --- /dev/null +++ b/wrangles-docs/registry-docs/format/prefix.md @@ -0,0 +1,97 @@ +--- +title: "Prefix" +description: "Add a prefix to a column." +sidebar_label: "Prefix" +slug: "/format/prefix" +--- + +# Prefix + +Add a prefix to a column. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of the input column. | — | +| `value` | Yes | string, integer, number | Prefix value to add. | — | +| `output` | No | string, array, null | (Optional) Name of the output column. | `null` | +| `skip_empty` | No | boolean | Whether to skip empty values. | `false` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Add a prefix to a column. + +## Migrated examples +#### Adding a Prefix to a String + +##### Recipe + +```yaml +wrangles: + - format.prefix: + input: Data + output: Prefix + value: anti +``` + +
+ +
+ +##### Input Sample + +| Data | +| --- | +| freeze | +| dote | +| hero | + +
+ +
+ +##### Output Sample + +| Data | Prefix | +| --- | --- | +| freeze | antifreeze | +| dote | antidote | +| hero | antihero | + +
+ +
+ +## Provenance + +- [WranglesPY format.prefix implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py) +- [Existing format.prefix Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/prefix.md) + +## Registry metadata + +- Registry ID: `c12f99b9-2363-4da7-8405-7c73b87906e5` +- Namespace: `format` +- Recipe key: `format.prefix` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.format.prefix` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/format/price-breaks.md b/wrangles-docs/registry-docs/format/price-breaks.md new file mode 100644 index 0000000..a18ba6b --- /dev/null +++ b/wrangles-docs/registry-docs/format/price-breaks.md @@ -0,0 +1,58 @@ +--- +title: "Format Price Breaks" +description: "Expand non-empty price-break cells into paired category and value columns." +sidebar_label: "Format Price Breaks" +slug: "/format/price-breaks" +--- + +# Format Price Breaks + +Expand non-empty price-break cells into paired category and value columns. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | array | Name, index, or list of input columns. | — | +| `categoryLabel` | Yes | string | Prefix for output columns that identify the source price-break category. | — | +| `valueLabel` | Yes | string | Prefix for output columns that contain the corresponding price-break value. | — | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +## Behavior + +Expand non-empty price-break cells into paired category and value columns. + +This first-pass guidance is derived from the callable signature. + +## Provenance + +- [WranglesPY format.price_breaks implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py) + +## Registry metadata + +- Registry ID: pending database assignment +- Namespace: `format` +- Recipe key: `format.price_breaks` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.format.price_breaks` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/format/remove-duplicates.md b/wrangles-docs/registry-docs/format/remove-duplicates.md new file mode 100644 index 0000000..52f2fd1 --- /dev/null +++ b/wrangles-docs/registry-docs/format/remove-duplicates.md @@ -0,0 +1,94 @@ +--- +title: "Remove Duplicates" +description: "Remove duplicates from a list. Preserves input order." +sidebar_label: "Remove Duplicates" +slug: "/format/remove-duplicates" +--- + +# Remove Duplicates + +Remove duplicates from a list. Preserves input order. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of the input column. | — | +| `output` | No | string, array, null | Name of the output column. | `null` | +| `ignore_case` | No | boolean | Ignore case when removing duplicates. | `false` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Remove duplicate values in a list. + +## Migrated examples +#### Removing Duplicates From a List + +##### Recipe + +```yaml +wrangles: + - format.remove_duplicates: + input: Attack of the Clones + output: Commander + where: Rank = Commander +``` + +
+ +
+ +##### Input Sample + +| Rank | Attack of the Clones | +| --- | --- | +| Commander | ['Cody', 'Cody', 'Cody'] | +| Captain | ['Rex', 'Rex', 'Rex'] | + +
+ +
+ +##### Output Sample + +| Rank | Commander | Attack of the Clones | +| --- | --- | --- | +| Commander | ['Cody'] | ['Cody', 'Cody', 'Cody'] | +| Captain | | ['Rex', 'Rex', 'Rex'] | + +
+ +
+ +## Provenance + +- [WranglesPY format.remove_duplicates implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py) +- [Existing format.remove_duplicates Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/remove-duplicates.md) + +## Registry metadata + +- Registry ID: `283b9e78-b2b2-43d0-844f-9842c33120aa` +- Namespace: `format` +- Recipe key: `format.remove_duplicates` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.format.remove_duplicates` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/format/significant-figures.md b/wrangles-docs/registry-docs/format/significant-figures.md new file mode 100644 index 0000000..a4f4f6d --- /dev/null +++ b/wrangles-docs/registry-docs/format/significant-figures.md @@ -0,0 +1,96 @@ +--- +title: "Significant Figures" +description: "Format a value to a specific number of significant figures." +sidebar_label: "Significant Figures" +slug: "/format/significant-figures" +--- + +# Significant Figures + +Format a value to a specific number of significant figures. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of the input column. | — | +| `significant_figures` | No | integer | Number of significant figures to format to. Default is 3. | `3` | +| `output` | No | string, array, null | Name of the output column. | `null` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Format a value to a specific number of significant figures + +## Migrated examples +#### Rounding to Significant Figures + +##### Recipe + +```yaml +wrangles: + - format.significant_figures: + input: Data + significant_figures: 2 + output: Data to 2 Figures +``` + +
+ +
+ +##### Input Sample + +| Data | +| --- | +| 1.25 | +| 12.3 | +| 55.6 | + +
+ +
+ +##### Output Sample + +| Data | Data to 2 Figures | +| --- | --- | +| 1.25 | 1.2 | +| 12.3 | 12 | +| 55.6 | 55 | + +
+ +
+ +## Provenance + +- [WranglesPY format.significant_figures implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py) +- [Existing format.significant_figures Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/significant-figures.md) + +## Registry metadata + +- Registry ID: `a359f72a-5250-4dd8-84f6-8a8173bee0f6` +- Namespace: `format` +- Recipe key: `format.significant_figures` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.format.significant_figures` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/format/suffix.md b/wrangles-docs/registry-docs/format/suffix.md new file mode 100644 index 0000000..a222525 --- /dev/null +++ b/wrangles-docs/registry-docs/format/suffix.md @@ -0,0 +1,97 @@ +--- +title: "Suffix" +description: "Add a suffix to a column." +sidebar_label: "Suffix" +slug: "/format/suffix" +--- + +# Suffix + +Add a suffix to a column. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of the input column. | — | +| `value` | Yes | string, integer, number, array | Suffix value to add. | — | +| `output` | No | string, null | (Optional) Name of the output column. | `null` | +| `skip_empty` | No | boolean | Whether to skip empty values. | `false` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Add a suffix to a column + +## Migrated examples +#### Adding a Suffix to a String + +##### Recipe + +```yaml +wrangles: + - format.suffix: + input: Data + output: Suffix + value: ic +``` + +
+ +
+ +##### Input Sample + +| Data | +| --- | +| sto | +| hero | +| icon | + +
+ +
+ +##### Output Sample + +| Data | Suffix | +| --- | --- | +| sto | stoic | +| hero | heroic | +| icon | iconic | + +
+ +
+ +## Provenance + +- [WranglesPY format.suffix implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py) +- [Existing format.suffix Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/suffix.md) + +## Registry metadata + +- Registry ID: `8d127060-ba2d-4934-897f-07662e01e40b` +- Namespace: `format` +- Recipe key: `format.suffix` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.format.suffix` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/format/trim.md b/wrangles-docs/registry-docs/format/trim.md new file mode 100644 index 0000000..9db7a1d --- /dev/null +++ b/wrangles-docs/registry-docs/format/trim.md @@ -0,0 +1,95 @@ +--- +title: "Trim" +description: "Remove excess whitespace at the start and end of text." +sidebar_label: "Trim" +slug: "/format/trim" +--- + +# Trim + +Remove excess whitespace at the start and end of text. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of the input column. | — | +| `output` | No | string, array, null | Name of the output column. | `null` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Remove excess whitespace at the start and end of text. Can accept multiple columns. + +:::note +Non-string values pass through unaltered. +::: + +## Migrated examples +#### Trimming a String + +##### Recipe + +```yaml +wrangles: + - format.trim: + input: + - col1 + output: col1 trimmed +``` + +
+ +
+ +##### Input Sample + +| col1 | +| --- | +| ` Hello World ` | + +
+ +
+ +##### Output Sample + +| col1 | col1 trimmed | +| --- | --- | +| Hello World | Hello World | + +
+ +
+ +## Provenance + +- [WranglesPY format.trim implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py) +- [Existing format.trim Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/trim.md) + +## Registry metadata + +- Registry ID: `af16b3c1-c230-4868-8ebe-f574904a0c76` +- Namespace: `format` +- Recipe key: `format.trim` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.format.trim` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/generate/ai.md b/wrangles-docs/registry-docs/generate/ai.md new file mode 100644 index 0000000..95200c1 --- /dev/null +++ b/wrangles-docs/registry-docs/generate/ai.md @@ -0,0 +1,112 @@ +--- +title: "Ai" +description: "Generate structured AI output for each recipe row." +sidebar_label: "Ai" +slug: "/generate/ai" +--- + +# Ai + +Generate structured AI output for each recipe row. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `api_key` | Yes | string | OpenAI-compatible API key. | — | +| `output` | Yes | string, array, object | Target schema; string/array shorthands are expanded automatically. | — | +| `input` | No | string, array, null | Column(s) to concatenate into the prompt (defaults to all columns). | `null` | +| `model` | No | string | Responses model name (e.g. gpt-5-mini). | `"gpt-5"` | +| `threads` | No | integer | Maximum concurrent requests (default 20). | `20` | +| `timeout` | No | integer | Per-request timeout in seconds. | `90` | +| `retries` | No | integer | Number of retry attempts on failure. | `0` | +| `messages` | No | array, object, null | Optional extra messages forwarded to the inner generate helper. | `null` | +| `url` | No | string | Override for the OpenAI-compatible endpoint. | `"https://api.openai.com/v1/responses"` | +| `strict` | No | boolean | Enforce JSON-schema validation on the response. | `false` | +| `web_search` | No | boolean | Enable DuckDuckGo context lookup per row. | `false` | +| `reasoning` | No | string, object | Responses API reasoning options (forwarded verbatim). | `{"effort":"low"}` | +| `previous_response` | No | boolean | Chain responses by reusing previous_response_id for field-by-field calls. | `false` | +| `summary` | No | boolean | Request summary text to be merged into the output. | `false` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Generate structured AI output for each recipe row. + +## Migrated examples +#### Generate Structured Product Data + +This template generates a category from a product description. AI-generated values can vary by model and request. + +##### Recipe + +```yaml +wrangles: + - generate.ai: + input: + - Product Description + output: + Category: + type: string + description: Broad product category + api_key: Your OpenAI-compatible API key + model: gpt-5-mini +``` + +
+ +
+ +##### Input Sample + +| Product Description | +| --- | +| Stainless steel insulated water bottle, 750 ml | + +
+ +
+ +##### Output Sample + +| Product Description | Category | +| --- | --- | +| Stainless steel insulated water bottle, 750 ml | Drinkware | + +
+ +
+ +_Template based on the documented parameters; no published source example is currently available._ + +## Provenance + +- [WranglesPY generate.ai implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/generate.py) +- [Existing generate.ai Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/ai/_sources/ai.md) + +## Registry metadata + +- Registry ID: `12c31c6c-cade-484d-84ba-7f302bf6af52` +- Namespace: `generate` +- Recipe key: `generate.ai` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.generate.ai` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/huggingface.md b/wrangles-docs/registry-docs/huggingface.md new file mode 100644 index 0000000..d31ed6f --- /dev/null +++ b/wrangles-docs/registry-docs/huggingface.md @@ -0,0 +1,101 @@ +--- +title: "Huggingface" +description: "Use a model from huggingface." +sidebar_label: "Huggingface" +slug: "/huggingface" +--- + +# Huggingface + +Use a model from huggingface. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of the input column. | — | +| `api_token` | Yes | string | Huggingface API Token. | — | +| `model` | Yes | string | Name of the model to use. e.g. facebook/bart-large-cnn. | — | +| `output` | No | string, array, null | Name of the output column. If not provided, will overwrite the input column. | `null` | +| `parameters` | No | object, null | Optionally, provide additional parameters to define the model behaviour. | `null` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Use a model from huggingface + +## Migrated examples +#### Summarize Product Descriptions + +This template uses a Hugging Face summarization model. The exact response shape and text depend on the selected model. + +##### Recipe + +```yaml +wrangles: + - huggingface: + input: + - Product Description + output: + - Summary + api_token: Your Hugging Face API token + model: facebook/bart-large-cnn +``` + +
+ +
+ +##### Input Sample + +| Product Description | +| --- | +| A cordless drill with two batteries, a charger, and a compact carrying case. | + +
+ +
+ +##### Output Sample + +| Product Description | Summary | +| --- | --- | +| A cordless drill with two batteries, a charger, and a compact carrying case. | Cordless drill kit with batteries, charger, and case. | + +
+ +
+ +_Template based on the documented parameters; no published source example is currently available._ + +## Provenance + +- [WranglesPY huggingface implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py) +- [Existing huggingface Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/ai/_sources/huggingface.md) + +## Registry metadata + +- Registry ID: `ae12cf20-4934-428f-84a9-a6898cb7ffe0` +- Namespace: root-level runtime key +- Recipe key: `huggingface` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.main.huggingface` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/index.md b/wrangles-docs/registry-docs/index.md new file mode 100644 index 0000000..1f2b0db --- /dev/null +++ b/wrangles-docs/registry-docs/index.md @@ -0,0 +1,112 @@ +--- +title: Wrangles Registry Pilot +description: Pilot of the versioned Wrangles recipe knowledge registry. +slug: / +--- + +# Wrangles Registry Pilot + +This preview contains the first Registry records compiled from the new +Markdown contract. These pages are not yet the production replacement for the +existing wrangle reference. + +| Wrangle | Description | Runtime contract | +| --- | --- | --- | +| [`accordion`](/wrangles/accordion) | Apply a series of wrangles to column(s) containing lists. The wrangles will be applied to each element in the list and the results will be returned back as a list. | `verified` | +| [`batch`](/wrangles/batch) | Split the data into batches for executing a list of wrangles. Use this in situations such as where the intermediate data is too large to fit in memory. | `verified` | +| [`classify`](/wrangles/classify) | Run classify wrangles on the specified columns. Requires WrangleWorks Account and Subscription. | `verified` | +| [`clean_whitespaces`](/wrangles/clean-whitespaces) | Condense multiple spaces to a single space and convert special space characters to a standard space. | `verified` | +| [`compare.lists`](/wrangles/compare/lists) | Compare multiple lists and return the intersection, difference, or union. | `verified` | +| [`compare.text`](/wrangles/compare/text) | Compare two strings and return the intersection or difference, use overlap to find the matching characters between the two strings, or use similarity to get a numeric similarity score. | `verified` | +| [`compute.case_when`](/wrangles/compute/case-when) | Assign values to a column based on conditional logic. | `verified` | +| [`compute.score_search_results`](/wrangles/compute/score-search-results) | Scores and filters search results based on progressive partial/exact matching. Can return dictionaries or a parallel list of formatted strings. | `verified` | +| [`concurrent`](/wrangles/concurrent) | Run multiple wrangles concurrently rather than sequentially. Wrangles must specify output columns to be used concurrently. When using concurrent, Wrangles may not complete in a predictable order and it is not recommended to update overlapping columns with different wrangles. | `verified` | +| [`convert.case`](/wrangles/convert/case) | Change the letter case of text values. | `verified` | +| [`convert.data_type`](/wrangles/convert/data-type) | Convert values to strings, numbers, booleans, or datetimes. | `verified` | +| [`convert.fraction_to_decimal`](/wrangles/convert/fraction-to-decimal) | Convert fractions to decimals. | `verified` | +| [`convert.from_json`](/wrangles/convert/from-json) | Parse JSON text into lists, objects, scalars, booleans, or null values. | `verified` | +| [`convert.from_yaml`](/wrangles/convert/from-yaml) | Convert a YAML representation into an object. | `verified` | +| [`convert.to_json`](/wrangles/convert/to-json) | Convert an object to a JSON representation. | `verified` | +| [`convert.to_yaml`](/wrangles/convert/to-yaml) | Convert an object to a YAML representation. | `verified` | +| [`copy`](/wrangles/copy) | Make a copy of a column or a list of columns. | `verified` | +| [`create.bins`](/wrangles/create/bins) | Create a column that groups data into bins. | `verified` | +| [`create.column`](/wrangles/create/column) | Create column(s) with a user defined value. Defaults to None (empty). | `verified` | +| [`create.embeddings`](/wrangles/create/embeddings) | Create an embedding based on text input. | `verified` | +| [`create.guid`](/wrangles/create/guid) | Create column(s) with a GUID. | `verified` | +| [`create.hash`](/wrangles/create/hash) | Create a hash of a column. | `verified` | +| [`create.index`](/wrangles/create/index) | Create column(s) with an incremental index. e.g. 1,2,3... | `verified` | +| [`create.jinja`](/wrangles/create/jinja) | Output text using a jinja template. | `verified` | +| [`create.uuid`](/wrangles/create/uuid) | Create column(s) with a UUID. | `verified` | +| [`date_calculator`](/wrangles/date-calculator) | Add or Subtract time from a date. | `verified` | +| [`drop`](/wrangles/drop) | Drop (Delete) selected column(s). | `verified` | +| [`explode`](/wrangles/explode) | Explode a column of lists into rows. | `verified` | +| [`extract.address`](/wrangles/extract/address) | Extract parts of addresses. Requires WrangleWorks Account. | `verified` | +| [`extract.ai`](/wrangles/extract/ai) | Extract structured data from each input row using an AI model. Define the desired fields with output, or reuse a saved definition with model_id. | `verified` | +| [`extract.attributes`](/wrangles/extract/attributes) | Extract numeric attributes from the input such as weights or lengths. Requires WrangleWorks Account. | `verified` | +| [`extract.brackets`](/wrangles/extract/brackets) | Extract text properties in brackets from the input. | `verified` | +| [`extract.codes`](/wrangles/extract/codes) | Extract alphanumeric codes from the input. Requires WrangleWorks Account. | `verified` | +| [`extract.custom`](/wrangles/extract/custom) | Extract data from the input using a DIY or bespoke extraction wrangle. Requires WrangleWorks Account and Subscription. | `verified` | +| [`extract.date_properties`](/wrangles/extract/date-properties) | Extract date properties from a date (day, month, year, etc...). | `verified` | +| [`extract.date_range`](/wrangles/extract/date-range) | Extract date range frequency from two dates. | `verified` | +| [`extract.html`](/wrangles/extract/html) | Extract elements from strings containing html. Requires WrangleWorks Account. | `verified` | +| [`extract.properties`](/wrangles/extract/properties) | Extract text properties from the input. Requires WrangleWorks Account. | `verified` | +| [`extract.regex`](/wrangles/extract/regex) | Extract matches or specific capture groups using regex. | `verified` | +| [`filter`](/wrangles/filter) | Filter the dataframe based on the contents. If multiple filters are specified, all must be correct. For complex filters, use the where parameter. | `verified` | +| [`format.dates`](/wrangles/format/dates) | Format a date. | `verified` | +| [`format.pad`](/wrangles/format/pad) | Pad a string to a fixed length. | `verified` | +| [`format.prefix`](/wrangles/format/prefix) | Add a prefix to a column. | `verified` | +| [`format.price_breaks`](/wrangles/format/price-breaks) | Expand non-empty price-break cells into paired category and value columns. | `verified` | +| [`format.remove_duplicates`](/wrangles/format/remove-duplicates) | Remove duplicates from a list. Preserves input order. | `verified` | +| [`format.significant_figures`](/wrangles/format/significant-figures) | Format a value to a specific number of significant figures. | `verified` | +| [`format.suffix`](/wrangles/format/suffix) | Add a suffix to a column. | `verified` | +| [`format.trim`](/wrangles/format/trim) | Remove excess whitespace at the start and end of text. | `verified` | +| [`generate.ai`](/wrangles/generate/ai) | Generate structured AI output for each recipe row. | `verified` | +| [`huggingface`](/wrangles/huggingface) | Use a model from huggingface. | `verified` | +| [`log`](/wrangles/log) | Log the current status of the dataframe. | `verified` | +| [`lookup`](/wrangles/lookup) | Lookup values from a saved lookup wrangle. | `verified` | +| [`math`](/wrangles/math) | Apply a mathematical calculation. | `verified` | +| [`maths`](/wrangles/maths) | Deprecated alias for `math`; evaluate an expression and write its result to an output column. | `verified` | +| [`matrix`](/wrangles/matrix) | Apply a matrix of wrangles to the dataframe. This will run the wrangles for each combination of the variables. | `verified` | +| [`merge.coalesce`](/wrangles/merge/coalesce) | Take the first non-empty value from a series of columns or lists. | `verified` | +| [`merge.concatenate`](/wrangles/merge/concatenate) | Concatenate a list of columns or a list within a single column. | `verified` | +| [`merge.dictionaries`](/wrangles/merge/dictionaries) | Take dictionaries in multiple columns and merge them to a single dictionary. | `verified` | +| [`merge.key_value_pairs`](/wrangles/merge/key-value-pairs) | Create a dictionary from keys and values in paired columns e.g. COLUMN_NAME_1, COLUMN_VALUE_1, COLUMN_NAME_2, COLUMN_VALUE_2 ... | `verified` | +| [`merge.lists`](/wrangles/merge/lists) | Take lists in multiple columns and merge them to a single list. | `verified` | +| [`merge.to_dict`](/wrangles/merge/to-dict) | Take multiple columns and merge them to a dictionary (aka object) using the column headers as keys. | `verified` | +| [`merge.to_list`](/wrangles/merge/to-list) | Take multiple columns and merge them to a list. | `verified` | +| [`python`](/wrangles/python) | Apply a simple single-line python command. For more complex python use a custom function. Note, this evaluates the python command - be especially cautious including variables from untrusted sources within the command string. The python command will be evaluated once for each row and the result returned. Reference column values by using their name. Non-alphanumeric characters within column names are replaced by underscores (_) Additionally, all columns are available as a dict named kwargs. Additional parameters set for the wrangle will also be available to the command. | `verified` | +| [`recipe`](/wrangles/recipe) | Run another recipe as a wrangle against the current dataframe. | `verified` | +| [`reindex`](/wrangles/reindex) | Changes the row labels and column labels of a DataFrame. | `verified` | +| [`remove_words`](/wrangles/remove-words) | Remove all the elements that occur in one list from another. | `verified` | +| [`rename`](/wrangles/rename) | Rename a column or list of columns. | `verified` | +| [`replace`](/wrangles/replace) | Quick find and replace for simple values. Can use regex if 'input' in params and isinstance(params['input'], list):in the find field. | `verified` | +| [`round`](/wrangles/round) | Round column(s) to the specified decimals. | `verified` | +| [`search.find_links`](/wrangles/search/find-links) | Perform web searches to find links. Returns structured search results with titles, links, snippets, and optional pricing. | `verified` | +| [`search.retrieve_link_content`](/wrangles/search/retrieve-link-content) | Retrieves targeted content from web pages using LLM URL extraction. Can optionally output a second column containing a clean, human-readable text summary of the retrieved data. | `verified` | +| [`select.columns`](/wrangles/select/columns) | Select columns from the dataframe. | `verified` | +| [`select.dictionary_element`](/wrangles/select/dictionary-element) | Select one or more element of a dictionary. | `verified` | +| [`select.element`](/wrangles/select/element) | Select elements of lists or dicts using python syntax like col[0]['key']. | `verified` | +| [`select.group_by`](/wrangles/select/group-by) | Group and aggregate the data. | `verified` | +| [`select.head`](/wrangles/select/head) | Return the first n rows. | `verified` | +| [`select.highest_confidence`](/wrangles/select/highest-confidence) | Select the option with the highest confidence from multiple columns. Inputs are expected to be of the form [<<value>>, <<confidence_score>>]. | `verified` | +| [`select.left`](/wrangles/select/left) | Return characters from the left of text. Strings shorter than the length defined will be unaffected. | `verified` | +| [`select.length`](/wrangles/select/length) | Calculate the lengths of data in a column. The length depends on the data type e.g. text will be the length of the text, lists will be the number of elements in the list. | `verified` | +| [`select.list_element`](/wrangles/select/list-element) | Select a numbered element of a list (zero indexed). | `verified` | +| [`select.right`](/wrangles/select/right) | Return characters from the right of text. Strings shorter than the length defined will be unaffected. | `verified` | +| [`select.sample`](/wrangles/select/sample) | Return a random sample of the rows. | `verified` | +| [`select.substring`](/wrangles/select/substring) | Return characters from the middle of text. | `verified` | +| [`select.tail`](/wrangles/select/tail) | Return the last n rows. | `verified` | +| [`select.threshold`](/wrangles/select/threshold) | Select the first option if it exceeds a given threshold, else the second option. | `verified` | +| [`similarity`](/wrangles/similarity) | Calculate the cosine similarity of two vectors. | `verified` | +| [`sort`](/wrangles/sort) | Sort the data. | `verified` | +| [`split.dictionary`](/wrangles/split/dictionary) | Split one or more dictionaries into columns. The dictionary keys will be returned as the new column headers. If the dictionaries contain overlapping values, the last value will be returned. | `verified` | +| [`split.list`](/wrangles/split/list) | Split a list in a single column to multiple columns. | `verified` | +| [`split.text`](/wrangles/split/text) | Split a string to multiple columns or a list. | `verified` | +| [`split.tokenize`](/wrangles/split/tokenize) | Split text into tokens. A variety of methods are available. The default method is to split on spaces. | `verified` | +| [`sql`](/wrangles/sql) | Apply a SQL command to the current dataframe. Only SELECT statements are supported - the result will be the output. | `verified` | +| [`standardize`](/wrangles/standardize) | Standardize data using a DIY or bespoke standardization wrangle. Requires WrangleWorks Account and Subscription. | `verified` | +| [`standardize.clean`](/wrangles/standardize/clean) | Repair common encoding, Unicode, HTML character reference, control character, and whitespace problems locally. | `verified` | +| [`standardize.custom`](/wrangles/standardize/custom) | Standardize data using a DIY or bespoke standardization wrangle. Requires WrangleWorks Account and Subscription. | `verified` | +| [`translate`](/wrangles/translate) | Translate the input to a different language. Requires WrangleWorks Account and DeepL API Key (A free account for up to 500,000 characters per month is available). | `verified` | +| [`transpose`](/wrangles/transpose) | Transpose the DataFrame (swap columns to rows). | `verified` | +| [`try`](/wrangles/try) | Try a list of wrangles and catch any errors that occur. | `verified` | diff --git a/wrangles-docs/registry-docs/log.md b/wrangles-docs/registry-docs/log.md new file mode 100644 index 0000000..895f2db --- /dev/null +++ b/wrangles-docs/registry-docs/log.md @@ -0,0 +1,164 @@ +--- +title: "Log" +description: "Log the current status of the dataframe." +sidebar_label: "Log" +slug: "/log" +--- + +# Log + +Log the current status of the dataframe. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `columns` | No | array, null | (Optional, default all columns) List of specific columns to log. | `null` | +| `write` | No | array, null | (Optional) Allows for an intermediate output to a file/dataframe/database etc. | `null` | +| `warning` | No | string, null | Log a warning to the console. | `null` | +| `info` | No | string, null | Log info to the console. | `null` | +| `log_data` | No | boolean, null | Whether to log a sample of the contents of the dataframe. Default True if not logging to a write, error, warning or info. Default False otherwise. | `null` | +| `error` | No | string | Log an error to the console. | — | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Print the current status of the dataframe. Only a sample of rows is logged. + +## Migrated examples +#### Logging All Columns to Terminal + +##### Recipe + +```yaml +wrangles: + - log: {} +``` + +
+ +
+ +##### Input Sample + +_Logging side-effect; no tabular input sample._ + +
+ +
+ +##### Output Sample + +_Logs a sample of rows or status information to the configured destination._ + +
+ +
+ +#### Logging Specific Columns to Terminal + +##### Recipe + +```yaml +wrangles: + - log: + columns: + - column1 + - column2 +``` + +
+ +
+ +##### Input Sample + +_Logging side-effect; no tabular input sample._ + +
+ +
+ +##### Output Sample + +_Logs a sample of rows or status information to the configured destination._ + +
+ +
+ +#### Logging to a File + +##### Recipe + +```yaml +wrangles: + - log: + write: + - file: + name: output/filepath + columns: + - column 1 + - column 2 +``` + +
+ +
+ +##### Input Sample + +_Logging side-effect; no tabular input sample._ + +
+ +
+ +##### Output Sample + +_Logs a sample of rows or status information to the configured destination._ + +
+ +
+ +#### Native Variables + +| Variable | Function | +| --- | --- | +| `${column_count}` | Number of columns. | +| `${columns}` | List of all columns. | +| `${df}` | Current dataframe. | +| `${row_count}` | Number of visible rows processed in each batch. | + +## Provenance + +- [WranglesPY log implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py) +- [Existing log Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/utility/_sources/log.md) + +## Registry metadata + +- Registry ID: `6177808e-aa2d-4d0b-8385-858b16948a5d` +- Namespace: root-level runtime key +- Recipe key: `log` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.main.log` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/lookup.md b/wrangles-docs/registry-docs/lookup.md new file mode 100644 index 0000000..a6138ba --- /dev/null +++ b/wrangles-docs/registry-docs/lookup.md @@ -0,0 +1,99 @@ +--- +title: "Lookup" +description: "Lookup values from a saved lookup wrangle." +sidebar_label: "Lookup" +slug: "/lookup" +--- + +# Lookup + +Lookup values from a saved lookup wrangle. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string | Name of the column(s) to lookup. | — | +| `output` | No | string, array, null | Name of the output column(s). When n is provided and the output list length equals n, each output column receives the corresponding match. A single output containing a wildcard (*) is expanded into n columns, e.g. "Top *" with n: 3 becomes "Top 1", "Top 2", "Top 3". | `null` | +| `model_id` | No | string, null | The model_id to use lookup against. | `null` | +| `lookup_mode` | No | string; one of: by_row, by_matrix, by_dataframe | How to perform lookups. 'by_row' (default): lookup each row individually. 'by_dataframe': lookup unique values once, copy results to all rows. 'by_matrix': lookup once per matrix permutation. | `"by_row"` | +| `n` | No | integer, null | Number of matches to return per input value. When the output list length equals n, each output column receives the corresponding match. Otherwise all n matches are stored as a list in each output column. | `null` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Look up data from a saved Lookup Wrangle. Data is output as a dictionary if an output is not specified or the output does not match any columns in the lookup. If specific lookup columns are named in the output, they will be output as individual columns. + +## Migrated examples +#### State Example + +##### Recipe + +```yaml +wrangles: + - lookup: + input: State + output: + - Abbreviation + model_id: 55555555-5555-5555 +``` + +
+ +
+ +##### Input Sample + +| State | +| --- | +| Texas | +| New York | +| Virginia | + +
+ +
+ +##### Output Sample + +| Abbreviation | +| --- | +| TX | +| NY | +| VA | + +
+ +
+ +## Provenance + +- [WranglesPY lookup implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py) +- [Existing lookup Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/lookup/_sources/lookup.md) + +## Registry metadata + +- Registry ID: `b3339193-d1cc-4c89-8ed6-901efa6d81be` +- Namespace: root-level runtime key +- Recipe key: `lookup` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.main.lookup` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/math.md b/wrangles-docs/registry-docs/math.md new file mode 100644 index 0000000..48c9b62 --- /dev/null +++ b/wrangles-docs/registry-docs/math.md @@ -0,0 +1,98 @@ +--- +title: "Math" +description: "Apply a mathematical calculation." +sidebar_label: "Math" +slug: "/math" +--- + +# Math + +Apply a mathematical calculation. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string | The mathematical expression using column names. e.g. column1 * column2 + column3. Note: spaces within column names are replaced by underscores (_). | — | +| `output` | Yes | string | The column to output the results to. | — | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Apply mathematical calculations to columns. Also called as `maths`. + +:::info +Spaces within column headers are replaced with underscores automatically. Account for this when writing expressions in `input`. +::: + +## Migrated examples +#### Square Root Example + +##### Recipe + +```yaml +wrangles: + - math: + input: sqrt(Values) + output: Square Root +``` + +
+ +
+ +##### Input Sample + +| Values | +| --- | +| 4 | +| 9 | +| 16 | + +
+ +
+ +##### Output Sample + +| Values | Square Root | +| --- | --- | +| 4 | 2 | +| 9 | 3 | +| 16 | 4 | + +
+ +
+ +## Provenance + +- [WranglesPY math implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py) +- [Existing math Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compute/_sources/math.md) + +## Registry metadata + +- Registry ID: `494b11ad-00c1-4748-8b93-6bec982f4fec` +- Namespace: root-level runtime key +- Recipe key: `math` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.main.math` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/maths.md b/wrangles-docs/registry-docs/maths.md new file mode 100644 index 0000000..82079a3 --- /dev/null +++ b/wrangles-docs/registry-docs/maths.md @@ -0,0 +1,57 @@ +--- +title: "Maths" +description: "Deprecated alias for `math`; evaluate an expression and write its result to an output column." +sidebar_label: "Maths" +slug: "/maths" +--- + +# Maths + +Deprecated alias for `math`; evaluate an expression and write its result to an output column. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string | Name, index, or list of input columns. | — | +| `output` | Yes | string | Name or list of output columns. | — | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +## Behavior + +Deprecated alias for `math`; evaluate an expression and write its result to an output column. + +This first-pass guidance is derived from the callable signature. + +## Provenance + +- [WranglesPY maths implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py) + +## Registry metadata + +- Registry ID: pending database assignment +- Namespace: root-level runtime key +- Recipe key: `maths` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.main.maths` +- Status: `deprecated` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/matrix.md b/wrangles-docs/registry-docs/matrix.md new file mode 100644 index 0000000..0456ff2 --- /dev/null +++ b/wrangles-docs/registry-docs/matrix.md @@ -0,0 +1,169 @@ +--- +title: "Matrix" +description: "Apply a matrix of wrangles to the dataframe. This will run the wrangles for each combination of the variables." +sidebar_label: "Matrix" +slug: "/matrix" +--- + +# Matrix + +Apply a matrix of wrangles to the dataframe. This will run the wrangles for each combination of the variables. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `variables` | Yes | object | A dictionary of variables to pass to the wrangle. The key is the variable name and the value is a list of values. | — | +| `wrangles` | Yes | array | The wrangles to apply to the dataframe. Each wrangle will be run for each combination of the variables. | — | +| `strategy` | No | string; one of: permutations, loop | Determines how to combine variables when there are multiple. loop (default) iterates over each set of variables, repeating shorter lists until the longest is completed. permutations uses the combination of all variables against all other variables. | `"loop"` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Apply a matrix of wrangles to the dataframe. Each wrangle runs for the configured combinations of variables, including recipe variables and variables declared by the `variables` parameter. + +See the [Matrix connector](/python/connectors/matrix) for the connector equivalent. + +## Migrated examples +#### Use Hardcoded Variables + +Run a custom function once for each configured variable value. + +##### Recipe + +```yaml +wrangles: + - matrix: + variables: + var: [A, B, C] + wrangles: + - custom.test_fn: + input: Part Code + output: Part Code ${var} + value: ${var} +``` + +```python +def test_fn(part_code, value): + return part_code + value +``` + +
+ +
+ +##### Input Sample + +| Part Code | +| --- | +| 6202 | +| br549 | +| 554-114 | +| 554-112 | + +
+ +
+ +##### Output Sample + +| Part Code | Part Code A | Part Code B | Part Code C | +| --- | --- | --- | --- | +| 6202 | 6202A | 6202B | 6202C | +| br549 | br549A | br549B | br549C | +| 554-114 | 554-114A | 554-114B | 554-114C | +| 554-112 | 554-112A | 554-112B | 554-112C | + +
+ +
+ +#### Use Unique Variables Per Row + +This example runs `extract.custom` once for each unique model ID. + +##### Recipe + +```yaml +wrangles: + - matrix: + variables: + model_id: set(Model ID) + wrangles: + - extract.custom: + input: Description + output: Extracted Values + model_id: ${model_id} + where: "[Model ID] = ?" + where_params: + - ${model_id} +``` + +
+ +
+ +##### Input Sample + +| Description | Model ID | +| --- | --- | +| The SKF 6202 bearing is the best bearing in the world | xxxxxxxx-xxxx-xxxx | +| The Timken 6102 bearing is indestructible | yyyyyyyy-yyyy-yyyy | +| The Milwaukee impact has 1200ft-lbs of torque | zzzzzzzz-zzzz-zzzz | + +
+ +
+ +##### Output Sample + +| Description | Model ID | Extracted Values | +| --- | --- | --- | +| The SKF 6202 bearing is the best bearing in the world | xxxxxxxx-xxxx-xxxx | 6202 | +| The Timken 6102 bearing is indestructible | yyyyyyyy-yyyy-yyyy | indestructible | +| The Milwaukee impact has 1200ft-lbs of torque | zzzzzzzz-zzzz-zzzz | 1200ft-lbs | + +
+ +
+ +#### Native Variables + +| Variable | Function | +| --- | --- | +| `${column_count}` | Number of columns. | +| `${columns}` | List of all columns. | +| `${df}` | Current dataframe. | +| `${row_count}` | Number of visible rows processed in each batch. | + +## Provenance + +- [WranglesPY matrix implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py) +- [Existing matrix Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/utility/_sources/matrix.md) + +## Registry metadata + +- Registry ID: pending database assignment +- Namespace: root-level runtime key +- Recipe key: `matrix` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.main.matrix` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/merge/coalesce.md b/wrangles-docs/registry-docs/merge/coalesce.md new file mode 100644 index 0000000..6012906 --- /dev/null +++ b/wrangles-docs/registry-docs/merge/coalesce.md @@ -0,0 +1,98 @@ +--- +title: "Coalesce" +description: "Take the first non-empty value from a series of columns or lists." +sidebar_label: "Coalesce" +slug: "/merge/coalesce" +--- + +# Coalesce + +Take the first non-empty value from a series of columns or lists. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | array | List of input columns or a single column containing lists. | — | +| `output` | No | string, null | Name of the output columns. This is required if multiple input columns are provided. | `null` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Take the first non-empty value from a series of columns. + +## Migrated examples +#### Coalescing 3 Columns + +##### Recipe + +```yaml +wrangles: + - merge.coalesce: + input: + - Col1 + - Col2 + - Col3 + output: Output Col + where: Col2 = E +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | Col3 | +| --- | --- | --- | +| A | B | C | +| D | E | F | +| G | H | I | + +
+ +
+ +##### Output Sample + +| Col1 | Col2 | Col3 | Output Col | +| --- | --- | --- | --- | +| A | B | C | | +| D | E | F | D | +| G | H | I | | + +
+ +
+ +## Provenance + +- [WranglesPY merge.coalesce implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/merge.py) +- [Existing merge.coalesce Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/merge/_sources/coalesce.md) + +## Registry metadata + +- Registry ID: `25c1a60d-fa48-4b9a-8c03-0921d5b31049` +- Namespace: `merge` +- Recipe key: `merge.coalesce` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.merge.coalesce` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/merge/concatenate.md b/wrangles-docs/registry-docs/merge/concatenate.md new file mode 100644 index 0000000..691bf11 --- /dev/null +++ b/wrangles-docs/registry-docs/merge/concatenate.md @@ -0,0 +1,134 @@ +--- +title: "Concatenate" +description: "Concatenate a list of columns or a list within a single column." +sidebar_label: "Concatenate" +slug: "/merge/concatenate" +--- + +# Concatenate + +Concatenate a list of columns or a list within a single column. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Either a single column name or list of columns. | — | +| `output` | Yes | string | Name of the output column. | — | +| `char` | No | string | (Optional) Character to add between successive values. | `","` | +| `skip_empty` | No | boolean | Whether to skip empty values, defaults to false. | `false` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +If the input is a list of columns, concatenate multiple columns into one as a delimited string. If the input is a single column, concatenate a list within that column into a delimited string. + +## Migrated examples +#### Concatenating 3 Columns + +##### Recipe + +```yaml +# Using concatenate to combine multiple columns +wrangles: + - merge.concatenate: + input: + - Col1 + - Col2 + - Col3 + output: Join Col + char: ', ' +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | Col3 | +| --- | --- | --- | +| A | B | C | + +
+ +
+ +##### Output Sample + +| Join Col | +| --- | +| A, B, C | + +
+ +
+ +#### Concatenating a Single Column + +##### Recipe + +```yaml +# Using concatenate to join a column that is a list +wrangles: + - merge.concatenate: + input: Col1 + output: Join List + char: ' ' +``` + +
+ +
+ +##### Input Sample + +| Col1 | +| --- | +| ['A', 'B', 'C'] | + +
+ +
+ +##### Output Sample + +| Join List | +| --- | +| A B C | + +
+ +
+ +## Provenance + +- [WranglesPY merge.concatenate implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/merge.py) +- [Existing merge.concatenate Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/merge/_sources/concatenate.md) + +## Registry metadata + +- Registry ID: `6ff76728-e1f6-4d3d-8946-6aa3b7524b3f` +- Namespace: `merge` +- Recipe key: `merge.concatenate` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.merge.concatenate` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/merge/dictionaries.md b/wrangles-docs/registry-docs/merge/dictionaries.md new file mode 100644 index 0000000..edc07bf --- /dev/null +++ b/wrangles-docs/registry-docs/merge/dictionaries.md @@ -0,0 +1,173 @@ +--- +title: "Dictionaries" +description: "Take dictionaries in multiple columns and merge them to a single dictionary." +sidebar_label: "Dictionaries" +slug: "/merge/dictionaries" +--- + +# Dictionaries + +Take dictionaries in multiple columns and merge them to a single dictionary. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | array | List of input columns. | — | +| `output` | Yes | string | Name of the output column. | — | +| `skip_empty` | No | boolean | Whether to skip empty dictionaries when merging. | `false` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Take dictionaries in multiple columns and merge them to a single dictionary. + +:::note +For duplicate keys, the last key in the input list takes precedence in the merged dictionary. +::: + +## Migrated examples +#### Using Named Columns + +##### Recipe + +```yaml +wrangles: + - merge.dictionaries: + input: + - Dict 1 + - Dict 2 + output: Merged +``` + +
+ +
+ +##### Input Sample + +| Dict 1 | Dict 2 | +| --- | --- | +| \{'First': 'One'\} | \{'Second': 'Two'\} | + +
+ +
+ +##### Output Sample + +| Merged | +| --- | +| \{'First': 'One', 'Second': 'Two'\} | + +
+ +
+ +#### Using a Wildcard (*) + +##### Recipe + +```yaml +# Using a Wildcard (*) +wrangles: + - merge.dictionaries: + input: Dict * + output: Merged +``` + +
+ +
+ +##### Input Sample + +| Dict 1 | Dict 2 | +| --- | --- | +| \{'First': 'One'\} | \{'Second': 'Two'\} | + +
+ +
+ +##### Output Sample + +| Merged | +| --- | +| \{'First': 'One', 'Second': 'Two'\} | + +
+ +
+ +#### Using a Wildcard (*) With Not Columns + +##### Recipe + +```yaml +# Using a Wildcard (*) +wrangles: + - merge.dictionaries: + input: + - Dict * + - -Dict 2 + output: Merged +``` + +Note the extra dash in front of `Dict 2` excludes that column from the wildcard selection. + +
+ +
+ +##### Input Sample + +| Dict 1 | Dict 2 | Dict 3 | +| --- | --- | --- | +| \{'First': 'One'\} | \{'Second': 'Two'\} | \{'Third': 'Three'\} | + +
+ +
+ +##### Output Sample + +| Merged | +| --- | +| \{'First': 'One', 'Third': 'Three'\} | + +
+ +
+ +## Provenance + +- [WranglesPY merge.dictionaries implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/merge.py) +- [Existing merge.dictionaries Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/merge/_sources/dictionaries.md) + +## Registry metadata + +- Registry ID: `93e27737-e966-4ba9-8777-4e96724ebfc4` +- Namespace: `merge` +- Recipe key: `merge.dictionaries` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.merge.dictionaries` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/merge/key-value-pairs.md b/wrangles-docs/registry-docs/merge/key-value-pairs.md new file mode 100644 index 0000000..775b301 --- /dev/null +++ b/wrangles-docs/registry-docs/merge/key-value-pairs.md @@ -0,0 +1,137 @@ +--- +title: "Key Value Pairs" +description: "Create a dictionary from keys and values in paired columns e.g. COLUMN_NAME_1, COLUMN_VALUE_1, COLUMN_NAME_2, COLUMN_VALUE_2 ..." +sidebar_label: "Key Value Pairs" +slug: "/merge/key-value-pairs" +--- + +# Key Value Pairs + +Create a dictionary from keys and values in paired columns e.g. COLUMN_NAME_1, COLUMN_VALUE_1, COLUMN_NAME_2, COLUMN_VALUE_2 ... + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | object | Matched pairs of key and value columns. | — | +| `output` | Yes | string | Name of the output column. | — | +| `skip_empty` | No | boolean | Whether to skip empty keys or values when creating the dictionary. | `false` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Create a dictionary from keys and values in paired columns. + +## Migrated examples +#### Using Named Columns + +##### Recipe + +```yaml +wrangles: + - merge.key_value_pairs: + input: + Letter: Number + output: Pairs +``` + +
+ +
+ +##### Input Sample + +| Letter | Number | +| --- | --- | +| A | 1 | +| B | 2 | +| C | 3 | + +
+ +
+ +##### Output Sample + +| Pairs | +| --- | +| \{'A': 1\} | +| \{'B': 2\} | +| \{'C': 3\} | + +
+ +
+ +#### Using a wildcard (*) + +##### Recipe + +```yaml +# Using a Wildcard (*) +wrangles: + - merge.key_value_pairs: + input: + key*: value* + output: Object +``` + +
+ +
+ +##### Input Sample + +| key 1 | key 2 | value 1 | value 2 | +| --- | --- | --- | --- | +| A | One | a | First | +| B | Two | b | Second | +| C | three | c | Third | + +
+ +
+ +##### Output Sample + +| Object | +| --- | +| \{'A': 'a', 'One': 'First'\} | +| \{'B': 'b', 'Two': 'Second'\} | +| \{'C': 'c', 'three': 'Third'\} | + +
+ +
+ +## Provenance + +- [WranglesPY merge.key_value_pairs implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/merge.py) +- [Existing merge.key_value_pairs Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/merge/_sources/key-value-pairs.md) + +## Registry metadata + +- Registry ID: `8a2cd37c-8ef7-4b05-8264-36512f5dd837` +- Namespace: `merge` +- Recipe key: `merge.key_value_pairs` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.merge.key_value_pairs` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/merge/lists.md b/wrangles-docs/registry-docs/merge/lists.md new file mode 100644 index 0000000..11adfec --- /dev/null +++ b/wrangles-docs/registry-docs/merge/lists.md @@ -0,0 +1,96 @@ +--- +title: "Lists" +description: "Take lists in multiple columns and merge them to a single list." +sidebar_label: "Lists" +slug: "/merge/lists" +--- + +# Lists + +Take lists in multiple columns and merge them to a single list. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | array | List of input columns. | — | +| `output` | Yes | string | Name of the output column. | — | +| `remove_duplicates` | No | boolean | Whether to remove duplicates from the created list. | `false` | +| `ignore_case` | No | boolean | Ignore case when removing duplicates. | `false` | +| `include_empty` | No | boolean | Whether to include empty values in the created list. | `true` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Take lists in multiple columns and merge them to a single list. + +## Migrated examples +#### Merging Two Lists + +##### Recipe + +```yaml +wrangles: + - merge.lists: + input: + - col1 + - col2 + output: Combined Col + remove_duplicates: false +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | +| --- | --- | +| ['A', 'B'] | ['D', 'E'] | + +
+ +
+ +##### Output Sample + +| Combined Col | +| --- | +| ['A', 'B', 'D', 'E'] | + +
+ +
+ +## Provenance + +- [WranglesPY merge.lists implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/merge.py) +- [Existing merge.lists Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/merge/_sources/lists.md) + +## Registry metadata + +- Registry ID: `d9978f00-b3d4-4583-884e-a53b98a43e9a` +- Namespace: `merge` +- Recipe key: `merge.lists` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.merge.lists` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/merge/to-dict.md b/wrangles-docs/registry-docs/merge/to-dict.md new file mode 100644 index 0000000..5ec8452 --- /dev/null +++ b/wrangles-docs/registry-docs/merge/to-dict.md @@ -0,0 +1,93 @@ +--- +title: "To Dict" +description: "Take multiple columns and merge them to a dictionary (aka object) using the column headers as keys." +sidebar_label: "To Dict" +slug: "/merge/to-dict" +--- + +# To Dict + +Take multiple columns and merge them to a dictionary (aka object) using the column headers as keys. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | array | List of input columns. | — | +| `output` | Yes | string | Name of the output column. | — | +| `include_empty` | No | boolean | Whether to include empty columns in the created dictionary. | `false` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Take multiple columns and merge them to a dictionary (aka object) using the column headers as keys. + +## Migrated examples +#### Merging Two Columns Into a Dictionary + +##### Recipe + +```yaml +wrangles: + - merge.to_dict: + input: + - Col1 + - Col2 + output: Dict Col +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | +| --- | --- | +| A | B | + +
+ +
+ +##### Output Sample + +| Dict Col | +| --- | +| \{'Col1': 'A', 'Col2': 'B'\} | + +
+ +
+ +## Provenance + +- [WranglesPY merge.to_dict implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/merge.py) +- [Existing merge.to_dict Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/merge/_sources/to-dict.md) + +## Registry metadata + +- Registry ID: `9b869210-0d89-403b-8409-7cecdb5f9c7c` +- Namespace: `merge` +- Recipe key: `merge.to_dict` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.merge.to_dict` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/merge/to-list.md b/wrangles-docs/registry-docs/merge/to-list.md new file mode 100644 index 0000000..169d847 --- /dev/null +++ b/wrangles-docs/registry-docs/merge/to-list.md @@ -0,0 +1,94 @@ +--- +title: "To List" +description: "Take multiple columns and merge them to a list." +sidebar_label: "To List" +slug: "/merge/to-list" +--- + +# To List + +Take multiple columns and merge them to a list. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | array | List of input columns. | — | +| `output` | Yes | string | Name of the output column. | — | +| `include_empty` | No | boolean | Whether to include empty columns in the created list. | `false` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Take multiple columns and merge them to a list. + +## Migrated examples +#### Merging Multiple Columns to a Single List + +##### Recipe + +```yaml +wrangles: + - merge.to_list: + input: + - Col1 + - Col2 + - Col3 + output: List Col +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | Col3 | +| --- | --- | --- | +| A | B | C | + +
+ +
+ +##### Output Sample + +| List Col | +| --- | +| ['A', 'B', 'C'] | + +
+ +
+ +## Provenance + +- [WranglesPY merge.to_list implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/merge.py) +- [Existing merge.to_list Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/merge/_sources/to-list.md) + +## Registry metadata + +- Registry ID: `d5300fe7-c8a4-4a41-8f12-f2c1698678cc` +- Namespace: `merge` +- Recipe key: `merge.to_list` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.merge.to_list` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/python.md b/wrangles-docs/registry-docs/python.md new file mode 100644 index 0000000..399faa6 --- /dev/null +++ b/wrangles-docs/registry-docs/python.md @@ -0,0 +1,130 @@ +--- +title: "Python" +description: "Apply a simple single-line python command. For more complex python use a custom function. Note, this evaluates the python command - be especially cautious including variables from untrusted sources within the command string. The python command will be evaluated once for each row and the result returned. Reference column values by using their name. Non-alphanumeric characters within column names are replaced by underscores (_) Additionally, all columns are available as a dict named kwargs. Additional parameters set for the wrangle will also be available to the command." +sidebar_label: "Python" +slug: "/python" +--- + +# Python + +Apply a simple single-line python command. For more complex python use a custom function. Note, this evaluates the python command - be especially cautious including variables from untrusted sources within the command string. The python command will be evaluated once for each row and the result returned. Reference column values by using their name. Non-alphanumeric characters within column names are replaced by underscores (_) Additionally, all columns are available as a dict named kwargs. Additional parameters set for the wrangle will also be available to the command. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `command` | Yes | string | Python command. This must return a value. Note: any non-alphanumeric characters in variable names are replaced by underscores (_). | — | +| `output` | Yes | string, array | Name or list of output column(s). To output multiple columns, return a list of the corresponding length. | — | +| `input` | No | string, integer, array, null | Name or list of input column(s) to filter the data available to the command. Useful in conjunction with kwargs to target a variable range of columns. If not specified, all columns will be available. | `null` | +| `except` | No | string, array, number, integer, boolean, object | Value to return for the row if an exception occurs during the evaluation. If not provided, an exception will be raised as normal. If multiple output columns are specified, this must match the length. | — | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +The Python wrangle executes simple Python commands inline within a recipe. Row values are referenced by column name and commands are evaluated once per row. Spaces within column names are replaced by underscores (`_`). All columns are also available as a dictionary named `kwargs`. For more complex Python, use custom functions. + +:::caution +This wrangle evaluates the Python command. Be cautious when including variables from untrusted sources in the command string. +::: + +## Migrated examples +#### Python Wrangle + +##### Recipe + +```yaml +wrangles: + - python: + output: result + command: My_Column.upper() +``` + +
+ +
+ +##### Input Sample + +| My Column | +| --- | +| example text | + +
+ +
+ +##### Output Sample + +| My Column | result | +| --- | --- | +| example text | EXAMPLE TEXT | + +
+ +
+ +#### Including Your Own Parameters + +The Python wrangle supports parameters so values of unknown origin can be injected safely. + +##### Recipe + +```yaml +wrangles: + - python: + output: sliced + command: input_column[:i] + i: ${var} +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +_No sample available._ + +
+ +
+ +## Provenance + +- [WranglesPY python implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py) +- [Existing python Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compute/_sources/python.md) + +## Registry metadata + +- Registry ID: `c0398a11-7731-4e47-8df0-b07eea0b1d6c` +- Namespace: root-level runtime key +- Recipe key: `python` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.main.python` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/recipe.md b/wrangles-docs/registry-docs/recipe.md new file mode 100644 index 0000000..add4f58 --- /dev/null +++ b/wrangles-docs/registry-docs/recipe.md @@ -0,0 +1,59 @@ +--- +title: "Recipe" +description: "Run another recipe as a wrangle against the current dataframe." +sidebar_label: "Recipe" +slug: "/recipe" +--- + +# Recipe + +Run another recipe as a wrangle against the current dataframe. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | No | string, integer, array, null | Name, index, or list of input columns. | `null` | +| `output` | No | string, array, null | Name or list of output columns. | `null` | +| `name` | No | string, null | File name of the recipe. | `null` | +| `variables` | No | object, null | A dictionary of variables to pass to the recipe. | `null` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +## Behavior + +Run another recipe as a wrangle against the current dataframe. + +This first-pass guidance is derived from the callable signature and its embedded Python schema docstring. + +## Provenance + +- [WranglesPY recipe implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py) + +## Registry metadata + +- Registry ID: pending database assignment +- Namespace: root-level runtime key +- Recipe key: `recipe` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.main.recipe` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/reindex.md b/wrangles-docs/registry-docs/reindex.md new file mode 100644 index 0000000..30895d5 --- /dev/null +++ b/wrangles-docs/registry-docs/reindex.md @@ -0,0 +1,106 @@ +--- +title: "Reindex" +description: "Changes the row labels and column labels of a DataFrame." +sidebar_label: "Reindex" +slug: "/reindex" +--- + +# Reindex + +Changes the row labels and column labels of a DataFrame. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `labels` | No | array, null | New labels / index to conform the axis specified by ‘axis’ to. | `null` | +| `index` | No | array, null | New labels for the index. Preferably an Index object to avoid duplicating data. | `null` | +| `columns` | No | array, null | New labels for the columns. Preferably an Index object to avoid duplicating data. | `null` | +| `axis` | No | string, integer, null | Axis to target. Can be either the axis name (‘index’, ‘columns’) or number (0, 1). | `null` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Conform a DataFrame to a new index with optional filling logic. + +## Migrated examples +:::note +Cannot specify both `axis` and any of `index` or `columns`. Reindex is not compatible with `where` filtering. +::: + +#### Reindexing a Dataframe + +##### Recipe + +```yaml +wrangles: + - reindex: + index: + - 5 + - 4 + - 3 + - 2 + - 1 +``` + +
+ +
+ +##### Input Sample + +| | Material | Product Data | +| --- | --- | --- | +| 1 | Ceramic | SKF ball brg | +| 2 | Rubber | brg seal | +| 3 | Brass | Ball valve | +| 4 | Ceramic | Ceramic cartridge | +| 5 | Stainless Steel | Needle Bearing | + +
+ +
+ +##### Output Sample + +| | Material | Product Data | +| --- | --- | --- | +| 5 | Stainless Steel | Needle Bearing | +| 4 | Ceramic | Ceramic cartridge | +| 3 | Brass | Ball valve | +| 2 | Rubber | brg seal | +| 1 | Ceramic | SKF ball brg | + +
+ +
+ +## Provenance + +- [WranglesPY reindex implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/pandas.py) +- [Existing reindex Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/transform/_sources/reindex.md) + +## Registry metadata + +- Registry ID: `def87df8-72da-4e34-83c1-1fde25126257` +- Namespace: root-level runtime key +- Recipe key: `reindex` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.pandas.reindex` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/remove-words.md b/wrangles-docs/registry-docs/remove-words.md new file mode 100644 index 0000000..6d2ba7b --- /dev/null +++ b/wrangles-docs/registry-docs/remove-words.md @@ -0,0 +1,100 @@ +--- +title: "Remove Words" +description: "Remove all the elements that occur in one list from another." +sidebar_label: "Remove Words" +slug: "/remove-words" +--- + +# Remove Words + +Remove all the elements that occur in one list from another. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of column to remove words from. | — | +| `to_remove` | Yes | string | Column or list of columns with a list of words to be removed. | — | +| `output` | No | string, array, null | Name of the output columns. | `null` | +| `tokenize_to_remove` | No | boolean | Tokenize all to_remove inputs. | `false` | +| `ignore_case` | No | boolean | Ignore input and to_remove case. | `true` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Remove all the elements that occur in one list from another. + +## Migrated examples +#### Removing Words From a Column + +##### Recipe + +```yaml +wrangles: + - remove_words: + input: Description + to_remove: # To Remove columns must be list + - Materials + - Colours + output: Product + tokenize_to_remove: True + ignore_case: False +``` + +
+ +
+ +##### Input Sample + +| Colours | Materials | Description | +| --- | --- | --- | +| ['Blue'] | ['Steel'] | Steel Blue Bottle | +| ['Blue'] | ['Steel'] | ['Steel', 'Blue', 'Bottle'] | + +
+ +
+ +##### Output Sample + +| Product | +| --- | +| Bottle | +| Bottle | + +
+ +
+ +## Provenance + +- [WranglesPY remove_words implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py) +- [Existing remove_words Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/remove-words.md) + +## Registry metadata + +- Registry ID: `543b96c3-f354-48be-8046-bf0cb9fbaf56` +- Namespace: root-level runtime key +- Recipe key: `remove_words` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.main.remove_words` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/rename.md b/wrangles-docs/registry-docs/rename.md new file mode 100644 index 0000000..ddc28e1 --- /dev/null +++ b/wrangles-docs/registry-docs/rename.md @@ -0,0 +1,175 @@ +--- +title: "Rename" +description: "Rename a column or list of columns." +sidebar_label: "Rename" +slug: "/rename" +--- + +# Rename + +Rename a column or list of columns. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | No | string, integer, array, null | Name or list of input columns. | `null` | +| `output` | No | string, array, null | Name or list of output columns. | `null` | +| `wrangles` | No | array, null | Use wrangles to transform the column names. The input is named 'columns' and the final result must also include the column named 'columns'. This can only be used instead of the standard rename. | `null` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Rename a column or list of columns. + +## Migrated examples +:::note +Rename is not compatible with `where` filtering. +::: + +#### Renaming Columns With Input and Output + +##### Recipe + +```yaml +wrangles: + - rename: + input: + - Manufacturer Name + - Manufacturer Part Number + output: + - Manufacturer + - MPN +``` + +
+ +
+ +##### Input Sample + +| Manufacturer Name | Manufacturer Part Number | +| --- | --- | +| SKF | 302-2 | +| Timken | PF48 | + +
+ +
+ +##### Output Sample + +| Manufacturer | MPN | +| --- | --- | +| SKF | 302-2 | +| Timken | PF48 | + +
+ +
+ +#### Renaming Columns Without Using Input and Output + +##### Recipe + +```yaml +wrangles: + - rename: + Manufacturer Name: Manufacturer + Manufacturer Part Number: MPN +``` + +
+ +
+ +##### Input Sample + +| Manufacturer Name | Manufacturer Part Number | +| --- | --- | +| SKF | 302-2 | +| Timken | PF48 | + +
+ +
+ +##### Output Sample + +| Manufacturer | MPN | +| --- | --- | +| SKF | 302-2 | +| Timken | PF48 | + +
+ +
+ +#### Using Wrangles in Rename + +##### Recipe + +```yaml +wrangles: + - rename: + wrangles: + - convert.case: + input: columns + case: upper +``` + +
+ +
+ +##### Input Sample + +| Manufacturer Name | Manufacturer Part Number | +| --- | --- | +| SKF | 302-2 | +| Timken | PF48 | + +
+ +
+ +##### Output Sample + +| MANUFACTURER NAME | MANUFACTURER PART NUMBER | +| --- | --- | +| SKF | 302-2 | +| Timken | PF48 | + +
+ +
+ +## Provenance + +- [WranglesPY rename implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py) +- [Existing rename Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/transform/_sources/rename.md) + +## Registry metadata + +- Registry ID: `ab06898f-faf7-42e7-8275-5e3034a4d727` +- Namespace: root-level runtime key +- Recipe key: `rename` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.main.rename` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/replace.md b/wrangles-docs/registry-docs/replace.md new file mode 100644 index 0000000..8d7dadd --- /dev/null +++ b/wrangles-docs/registry-docs/replace.md @@ -0,0 +1,99 @@ +--- +title: "Replace" +description: "Quick find and replace for simple values. Can use regex if 'input' in params and isinstance(params['input'], list):in the find field." +sidebar_label: "Replace" +slug: "/replace" +--- + +# Replace + +Quick find and replace for simple values. Can use regex if 'input' in params and isinstance(params['input'], list):in the find field. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name or list of input column. | — | +| `find` | Yes | string | Pattern to find using regex. | — | +| `replace` | Yes | string | Value to replace the pattern found. | — | +| `output` | No | string, array, null | Name or list of output column. | `null` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Quick find and replace for simple values. Can use regex in the `find` field. + +:::note +Values that are not a number or a string pass through unaltered. +::: + +## Migrated examples +#### Replacing an Abbreviation + +##### Recipe + +```yaml +wrangles: + - replace: + input: Product Data + find: brg + replace: bearing +``` + +
+ +
+ +##### Input Sample + +| Product Data | +| --- | +| SKF ball brg | +| brg seal | + +
+ +
+ +##### Output Sample + +| Product Data | +| --- | +| SKF ball bearing | +| bearing seal | + +
+ +
+ +## Provenance + +- [WranglesPY replace implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py) +- [Existing replace Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/replace.md) + +## Registry metadata + +- Registry ID: `f0ab715e-9e0e-4614-83e4-5cd8ea08a09f` +- Namespace: root-level runtime key +- Recipe key: `replace` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.main.replace` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/round.md b/wrangles-docs/registry-docs/round.md new file mode 100644 index 0000000..0d2d461 --- /dev/null +++ b/wrangles-docs/registry-docs/round.md @@ -0,0 +1,94 @@ +--- +title: "Round" +description: "Round column(s) to the specified decimals." +sidebar_label: "Round" +slug: "/round" +--- + +# Round + +Round column(s) to the specified decimals. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of the input column(s). | — | +| `decimals` | No | integer | Number of decimal places to round column. | `0` | +| `output` | No | string, array, null | Name of the output column(s). | `null` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Round numbers in a column to the nearest decimal point of your choosing. + +## Migrated examples +#### Rounding a Column + +##### Recipe + +```yaml +wrangles: + - round: + input: Cost Per Unit + output: Cost Rounded + decimals: 2 +``` + +
+ +
+ +##### Input Sample + +| Cost Per Unit | +| --- | +| 3.14159 | +| 2.71828 | + +
+ +
+ +##### Output Sample + +| Cost Per Unit | Cost Rounded | +| --- | --- | +| 3.14159 | 3.14 | +| 2.71828 | 2.72 | + +
+ +
+ +## Provenance + +- [WranglesPY round implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/pandas.py) +- [Existing round Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/round.md) + +## Registry metadata + +- Registry ID: `12f3111b-8511-4e42-8d3f-b5302dc3b4e4` +- Namespace: root-level runtime key +- Recipe key: `round` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.pandas.round` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/search/find-links.md b/wrangles-docs/registry-docs/search/find-links.md new file mode 100644 index 0000000..1e8820a --- /dev/null +++ b/wrangles-docs/registry-docs/search/find-links.md @@ -0,0 +1,109 @@ +--- +title: "Find Links" +description: "Perform web searches to find links. Returns structured search results with titles, links, snippets, and optional pricing." +sidebar_label: "Find Links" +slug: "/search/find-links" +--- + +# Find Links + +Perform web searches to find links. Returns structured search results with titles, links, snippets, and optional pricing. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `queries` | Yes | string, array | Name or list of input columns containing search queries. | — | +| `id` | Yes | string | Name of the column containing the row ID to append to each search result. | — | +| `output` | No | string, array, null | Output column for the dictionaries. If a list of 2 is provided, outputs [dicts_column, pretty_strings_column]. | `null` | +| `client` | No | string; one of: serpapi | The search provider to use. | `"serpapi"` | +| `api_key` | No | string, null | API key for the search client. Can also be set as an environment variable (e.g., SERPAPI_API_KEY). | `null` | +| `n_results` | No | integer | Number of search results to return per query (default 10, max 100). | `10` | +| `threads` | No | integer | Number of concurrent threads for parallel processing (default 10). | `10` | +| `country` | No | string | Country code for search results (default 'us'). Alias: gl. | — | +| `language` | No | string | Language code for search results (default 'en'). Alias: hl. | — | +| `location` | No | string | Location for search results (e.g., 'Austin, Texas'). | — | +| `device` | No | string; one of: desktop, mobile, tablet | Device type for search results. | — | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Perform web searches to find links. Returns structured search results with titles, links, snippets, and optional pricing. + +## Migrated examples +#### Find Product Links + +This template searches once per query and returns structured result dictionaries. Search results vary by provider, location, and time. + +##### Recipe + +```yaml +wrangles: + - search.find_links: + id: Row ID + queries: + - Search Query + output: + - Search Results + api_key: Your SerpApi API key + client: serpapi + n_results: 5 +``` + +
+ +
+ +##### Input Sample + +| Row ID | Search Query | +| --- | --- | +| 1001 | SKF 6202 bearing supplier | + +
+ +
+ +##### Output Sample + +| Row ID | Search Query | Search Results | +| --- | --- | --- | +| 1001 | SKF 6202 bearing supplier | `[{"title": "Example result", "link": "https://example.com/6202", "snippet": "SKF 6202 bearing"}]` | + +
+ +
+ +_Template based on the documented parameters; no published source example is currently available._ + +## Provenance + +- [WranglesPY search.find_links implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/search.py) +- [Existing search.find_links Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/search/_sources/find-links.md) + +## Registry metadata + +- Registry ID: `ec1f661b-2cbc-4a47-88e3-646179104376` +- Namespace: `search` +- Recipe key: `search.find_links` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.search.find_links` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/search/retrieve-link-content.md b/wrangles-docs/registry-docs/search/retrieve-link-content.md new file mode 100644 index 0000000..577ddda --- /dev/null +++ b/wrangles-docs/registry-docs/search/retrieve-link-content.md @@ -0,0 +1,106 @@ +--- +title: "Retrieve Link Content" +description: "Retrieves targeted content from web pages using LLM URL extraction. Can optionally output a second column containing a clean, human-readable text summary of the retrieved data." +sidebar_label: "Retrieve Link Content" +slug: "/search/retrieve-link-content" +--- + +# Retrieve Link Content + +Retrieves targeted content from web pages using LLM URL extraction. Can optionally output a second column containing a clean, human-readable text summary of the retrieved data. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, array | Name or list of input columns containing URLs or Scored Search Result dictionaries. | — | +| `output` | No | string, array, null | Name of the output column for the raw dictionaries. To output BOTH the raw dictionaries and the formatted text, provide a list of exactly two column names (e.g., [page_data, page_text]). | `null` | +| `client` | No | string; one of: google_url_context | The retrieval provider to use. | `"google_url_context"` | +| `api_key` | No | string, null | API key for the provider. Can also be set as an environment variable (e.g., GOOGLE_API_KEY). | `null` | +| `prompt` | No | string, null | Optional custom system prompt to guide the extraction behavior and output format. | `null` | +| `model_id` | No | string | The specific model ID to use (default models/gemini-3-flash-preview). | `"models/gemini-3-flash-preview"` | +| `output_format` | No | string; one of: markdown, json | The desired format for the extracted content. | `"json"` | +| `threads` | No | integer | Number of concurrent threads for parallel processing (default 10). | `10` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Retrieves targeted content from web pages using LLM URL extraction. Can optionally output a second column containing a clean, human-readable text summary of the retrieved data. + +## Migrated examples +#### Retrieve Structured Page Content + +This template extracts JSON content from a URL. Returned fields depend on the page, prompt, and retrieval model. + +##### Recipe + +```yaml +wrangles: + - search.retrieve_link_content: + input: + - Product URL + output: + - Page Data + api_key: Your Google API key + client: google_url_context + output_format: json + prompt: Extract the product title and manufacturer. +``` + +
+ +
+ +##### Input Sample + +| Product URL | +| --- | +| https://example.com/products/6202 | + +
+ +
+ +##### Output Sample + +| Product URL | Page Data | +| --- | --- | +| https://example.com/products/6202 | `{"title": "6202 Bearing", "manufacturer": "SKF"}` | + +
+ +
+ +_Template based on the documented parameters; no published source example is currently available._ + +## Provenance + +- [WranglesPY search.retrieve_link_content implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/search.py) +- [Existing search.retrieve_link_content Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/search/_sources/retrieve-link-content.md) + +## Registry metadata + +- Registry ID: `3d5faa87-9e96-48c0-8226-5ae566e8d76c` +- Namespace: `search` +- Recipe key: `search.retrieve_link_content` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.search.retrieve_link_content` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/select/columns.md b/wrangles-docs/registry-docs/select/columns.md new file mode 100644 index 0000000..8d30ba7 --- /dev/null +++ b/wrangles-docs/registry-docs/select/columns.md @@ -0,0 +1,90 @@ +--- +title: "Columns" +description: "Select columns from the dataframe." +sidebar_label: "Columns" +slug: "/select/columns" +--- + +# Columns + +Select columns from the dataframe. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of the column(s) to select. | — | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Select columns from the dataframe + +## Migrated examples +#### Selecting Columns + +##### Recipe + +```yaml +wrangles: + - select.columns: + input: Manufacturer +``` + +
+ +
+ +##### Input Sample + +| Part Number | Manufacturer | +| --- | --- | +| 1234 | SKF | +| 5678 | Timken | + +
+ +
+ +##### Output Sample + +| Manufacturer | +| --- | +| SKF | +| Timken | + +
+ +
+ +## Provenance + +- [WranglesPY select.columns implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py) +- [Existing select.columns Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/columns.md) + +## Registry metadata + +- Registry ID: `bca12c60-3957-4dc5-83f7-5ee460df2a11` +- Namespace: `select` +- Recipe key: `select.columns` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.select.columns` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/select/dictionary-element.md b/wrangles-docs/registry-docs/select/dictionary-element.md new file mode 100644 index 0000000..5c0a3e3 --- /dev/null +++ b/wrangles-docs/registry-docs/select/dictionary-element.md @@ -0,0 +1,291 @@ +--- +title: "Dictionary Element" +description: "Select one or more element of a dictionary." +sidebar_label: "Dictionary Element" +slug: "/select/dictionary-element" +--- + +# Dictionary Element + +Select one or more element of a dictionary. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of the input column. | — | +| `element` | Yes | string | The key or keys from the dictionary to select. If a single key is provided, the value will be returned If a lists of keys are selected, the result will be a new dictionary. | — | +| `output` | No | string, array, null | Name of the output column. If omitted, the input column will be replaced. | `null` | +| `default` | No | string, number, array, object, boolean, null | Set the default value to return if the specified element doesn't exist. If selecting multiple elements, a dict of defaults can be set. | `""` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Select one or more element of a dictionary. + +## Migrated examples +#### Selecting Dictionary Element Using Where + +##### Recipe + +```yaml +wrangles: + - select.dictionary_element: + input: Properties + output: Shapes + element: shapes + default: square + where: Part Number = 1234 +``` + +
+ +
+ +##### Input Sample + +| Properties | Part Number | +| --- | --- | +| \{'colours': ['red', 'white', 'blue'], 'shapes': 'round', 'materials': 'tungsten'\} | 1234 | +| \{'colours': ['green', 'yellow', 'orange'], 'shapes': 'square', 'materials': 'tungsten'\} | 5678 | + +
+ +
+ +##### Output Sample + +| Shapes | +| --- | +| round | +| | + +
+ +
+ +#### Selecting Multiple Dictionary Elements + +##### Recipe + +```yaml +wrangles: + - select.dictionary_element: + input: Properties + element: + - shapes + - materials +``` + +
+ +
+ +##### Input Sample + +| Properties | +| --- | +| \{'colours': ['red', 'white', 'blue'], 'shapes': 'round', 'materials': 'tungsten'\} | +| \{'colours': ['green', 'yellow', 'orange'], 'shapes': 'square', 'materials': 'tungsten'\} | + +
+ +
+ +##### Output Sample + +| Properties | +| --- | +| \{'shapes': 'round', 'materials': 'tungsten'\} | +| \{'shapes': 'square', 'materials': 'tungsten'\} | + +
+ +
+ +#### Selecting Multiple Dictionary Elements Using a Wildcard + +##### Recipe + +```yaml +wrangles: + - select.dictionary_element: + input: Properties + output: Output Dict + element: + - Col* +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| \{'Col1': 'A', 'Col2': 'B', 'Other3': 'C'\} | + +
+ +
+ +##### Output Sample + +| Column | Output Dict | +| --- | --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | \{'Col1': 'A', 'Col2': 'B'\} | + +
+ +
+ +#### Selecting Multiple Dictionary Elements Using Regex + +##### Recipe + +```yaml +wrangles: + - select.dictionary_element: + input: Properties + output: Output Dict + element: + - "regex: .*2" +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | + +
+ +
+ +##### Output Sample + +| Column | Output Dict | +| --- | --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | \{'Col2': 'B'\} | + +
+ +
+ +#### Selecting Elements While Renaming + +##### Recipe + +```yaml +wrangles: + - select.dictionary_element: + input: Properties + output: Output Dict + element: + - Col1: Column 1 + - Col2: Column 2 +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | + +
+ +
+ +##### Output Sample + +| Column | Output Dict | +| --- | --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | \{'Column 1': 'A', 'Column 2': 'B'\} | + +
+ +
+ +#### Using Default to Fill Missing Elements + +##### Recipe + +```yaml +wrangles: + - select.dictionary_element: + input: Properties + output: Output Dict + element: + - Col1 + - Col3 + default: + Col1: Z + Col3: Y +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | +| \{'Col1': 'D', 'Col2': 'E'\} | + +
+ +
+ +##### Output Sample + +| Column | Output Dict | +| --- | --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | \{'Col1': 'A', 'Col3': 'C'\} | +| \{'Col1': 'D', 'Col2': 'E'\} | \{'Col1': 'D', 'Col3': 'Y'\} | + +
+ +
+ +## Provenance + +- [WranglesPY select.dictionary_element implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py) +- [Existing select.dictionary_element Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/dictionary-element.md) + +## Registry metadata + +- Registry ID: `5adaeada-6da8-464f-84cb-9fb5ecc17e48` +- Namespace: `select` +- Recipe key: `select.dictionary_element` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.select.dictionary_element` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/select/element.md b/wrangles-docs/registry-docs/select/element.md new file mode 100644 index 0000000..4211766 --- /dev/null +++ b/wrangles-docs/registry-docs/select/element.md @@ -0,0 +1,93 @@ +--- +title: "Element" +description: "Select elements of lists or dicts using python syntax like col[0]['key']." +sidebar_label: "Element" +slug: "/select/element" +--- + +# Element + +Select elements of lists or dicts using python syntax like col[0]['key']. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of the input column and sub elements This permits by index for lists or dict and by key for dicts e.g. col[0]['key'] // [{"key":"val"}] -> "val". | — | +| `output` | No | string, array, null | Name of the output column(s). | `null` | +| `default` | No | string, number, array, object, boolean, null | Set the default value to return if the specified element doesn't exist. | `null` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Select elements of lists or dictionaries using Python syntax like `col[1:3]['key']`. + +## Migrated examples +#### Selecting The First Element + +##### Recipe + +```yaml +wrangles: + - select.element: + input: Column A[0] + output: First Element +``` + +
+ +
+ +##### Input Sample + +| Column A | +| --- | +| [A, 0.9] | +| [B, 0.8] | + +
+ +
+ +##### Output Sample + +| Column A | First Element | +| --- | --- | +| [A, 0.9] | A | +| [B, 0.8] | B | + +
+ +
+ +## Provenance + +- [WranglesPY select.element implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py) +- [Existing select.element Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/element.md) + +## Registry metadata + +- Registry ID: `223d2f4e-3247-4189-8b6c-e73fe44c4266` +- Namespace: `select` +- Recipe key: `select.element` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.select.element` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/select/group-by.md b/wrangles-docs/registry-docs/select/group-by.md new file mode 100644 index 0000000..495de76 --- /dev/null +++ b/wrangles-docs/registry-docs/select/group-by.md @@ -0,0 +1,151 @@ +--- +title: "Group By" +description: "Group and aggregate the data." +sidebar_label: "Group By" +slug: "/select/group-by" +--- + +# Group By + +Group and aggregate the data. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `by` | No | string, array | List of the input columns to group on. | `[]` | +| `auto_rename_columns` | No | boolean | If true (default), aggregated column names include the operation as a suffix (e.g. Value.sum). If false, column names are left as-is; use a dictionary entry to supply a custom output name (e.g. - Value: Total). | `true` | +| `list` | No | string, array | Group and return all values for these column(s) as a list. | — | +| `first` | No | string, array | The first value for these column(s). | — | +| `last` | No | string, array | The last value for these column(s). | — | +| `min` | No | string, array | The minimum value for these column(s). | — | +| `max` | No | string, array | The maximum value for these column(s). | — | +| `mean` | No | string, array | The mean (average) value for these column(s). | — | +| `median` | No | string, array | The median value for these column(s). | — | +| `nunique` | No | string, array | The count of unique values for these column(s). | — | +| `count` | No | string, array | The count of values for these column(s). | — | +| `counts` | No | string, array | Return a dictionary containing the count of each distinct value for these column(s). Keys are converted to JSON-safe strings; missing values use the key "null" and booleans use lowercase "true"/"false". | — | +| `std` | No | string, array | The standard deviation of values for these column(s). | — | +| `sum` | No | string, array | The total of values for these column(s). | — | +| `any` | No | string, array | Return true if any of the values for these column(s) are true. | — | +| `all` | No | string, array | Return true if all of the values for these column(s) are true. | — | +| `p75` | No | string, array | Get a percentile. Note, you can use any integer here for the corresponding percentile. | — | +| `custom.*` | No | string, array | Placeholder for custom functions. Replace 'placeholder' with the name of the function. | — | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Group and aggregate the data + +## Migrated examples +#### Grouping By One Column + +##### Recipe + +```yaml +wrangles: + - select.group_by: + by: + - Product Type + sum: Quantity + mean: Price ($) +``` + +
+ +
+ +##### Input Sample + +| Product | Quantity | Price ($) | Product Type | +| --- | --- | --- | --- | +| Hammer | 3 | 12.99 | Hand Tools | +| Ratchet Wrench | 12 | 6.99 | Hand Tools | +| Cordless Drill | 2 | 49.99 | Power Tools | +| Reciprocating Saw | 7 | 29.99 | Power Tools | + +
+ +
+ +##### Output Sample + +| Product Type | Quantity.sum | Price ($).mean | +| --- | --- | --- | +| Hand Tools | 15 | 9.99 | +| Power Tools | 9 | 39.99 | + +
+ +
+ +#### Grouping With Custom Function Aggregation + +##### Recipe + +```yaml +wrangles: + - select.group_by: + by: Category + custom.sum_times_two: Quantity +``` + +
+ +
+ +##### Input Sample + +| Category | Quantity | +| --- | --- | +| Hand Tools | 3 | +| Hand Tools | 1 | +| Hand Tools | 2 | +| Power Tools | 4 | + +
+ +
+ +##### Output Sample + +| Category | Quantity.sum_times_two | +| --- | --- | +| Hand Tools | 12 | +| Power Tools | 4 | + +
+ +
+ +## Provenance + +- [WranglesPY select.group_by implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py) +- [Existing select.group_by Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/group-by.md) + +## Registry metadata + +- Registry ID: `c0af10b1-423a-416c-8cb5-7e7fe1164964` +- Namespace: `select` +- Recipe key: `select.group_by` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.select.group_by` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/select/head.md b/wrangles-docs/registry-docs/select/head.md new file mode 100644 index 0000000..7f3b914 --- /dev/null +++ b/wrangles-docs/registry-docs/select/head.md @@ -0,0 +1,92 @@ +--- +title: "Head" +description: "Return the first n rows." +sidebar_label: "Head" +slug: "/select/head" +--- + +# Head + +Return the first n rows. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `n` | Yes | integer | Number of rows to return. | — | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Return the first n rows + +## Migrated examples +#### Selecting The First n Rows + +##### Recipe + +```yaml +wrangles: + - select.head: + n: 2 +``` + +
+ +
+ +##### Input Sample + +| Product | Manufacturer | +| --- | --- | +| Ball Bearing | SKF | +| Bearing Race | Timken | +| Needle Bearing | Acme Bearings | +| Roller Bearing | General Bearing Co. | + +
+ +
+ +##### Output Sample + +| Product | Manufacturer | +| --- | --- | +| Ball Bearing | SKF | +| Bearing Race | Timken | + +
+ +
+ +## Provenance + +- [WranglesPY select.head implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py) +- [Existing select.head Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/head.md) + +## Registry metadata + +- Registry ID: `237af1ec-db7d-415a-88b7-70586a2191fb` +- Namespace: `select` +- Recipe key: `select.head` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.select.head` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/select/highest-confidence.md b/wrangles-docs/registry-docs/select/highest-confidence.md new file mode 100644 index 0000000..46d3cc3 --- /dev/null +++ b/wrangles-docs/registry-docs/select/highest-confidence.md @@ -0,0 +1,133 @@ +--- +title: "Highest Confidence" +description: "Select the option with the highest confidence from multiple columns. Inputs are expected to be of the form [<>, <>]." +sidebar_label: "Highest Confidence" +slug: "/select/highest-confidence" +--- + +# Highest Confidence + +Select the option with the highest confidence from multiple columns. Inputs are expected to be of the form [<<value>>, <<confidence_score>>]. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | array | List of the input columns to select from. | — | +| `output` | Yes | string, array | If two columns; the result and confidence. If one column; [result, confidence]. | — | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Select the option with the highest confidence from multiple columns. Inputs are expected to be of the form `[value, confidence_score]`. + +## Migrated examples +#### Selecting Highest Confidence Single Output + +##### Recipe + +```yaml +wrangles: + - select.highest_confidence: + input: + - Col1 + - Col2 + - Col3 + output: Highest Confidence +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | Col3 | +| --- | --- | --- | +| ['A', 0.79] | ['B', 0.77] | ['C', 0.99] | + +
+ +
+ +##### Output Sample + +| Highest Confidence | +| --- | +| ['C', 0.99] | + +
+ +
+ +#### Selecting Highest Confidence Two Outputs + +##### Recipe + +```yaml +wrangles: + - select.highest_confidence: + input: + - Col1 + - Col2 + - Col3 + output: + - Item + - Confidence +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | Col3 | +| --- | --- | --- | +| ['A', 0.79] | ['B', 0.77] | ['C', 0.99] | + +
+ +
+ +##### Output Sample + +| Item | Confidence | +| --- | --- | +| C | 0.99 | + +
+ +
+ +## Provenance + +- [WranglesPY select.highest_confidence implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py) +- [Existing select.highest_confidence Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/highest-confidence.md) + +## Registry metadata + +- Registry ID: `00aad85d-8cc8-42e5-86f3-e4ff916e8ac2` +- Namespace: `select` +- Recipe key: `select.highest_confidence` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.select.highest_confidence` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/select/left.md b/wrangles-docs/registry-docs/select/left.md new file mode 100644 index 0000000..7eb9c68 --- /dev/null +++ b/wrangles-docs/registry-docs/select/left.md @@ -0,0 +1,92 @@ +--- +title: "Left" +description: "Return characters from the left of text. Strings shorter than the length defined will be unaffected." +sidebar_label: "Left" +slug: "/select/left" +--- + +# Left + +Return characters from the left of text. Strings shorter than the length defined will be unaffected. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of the column(s) to edit. | — | +| `length` | Yes | integer | Number of characters to include from the left. If negative, this will remove the specified number of characters from the left. May not equal 0. | — | +| `output` | No | string, array, null | Name of the output column(s). | `null` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Select characters from the left of the input. Using a negative length reverses the side of selection, selecting from the right. + +## Migrated examples +#### Selecting Three Leftmost Elements + +##### Recipe + +```yaml +wrangles: + - select.left: + input: Column + output: Result + length: 3 +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| pudding | + +
+ +
+ +##### Output Sample + +| Result | +| --- | +| pud | + +
+ +
+ +## Provenance + +- [WranglesPY select.left implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py) +- [Existing select.left Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/left.md) + +## Registry metadata + +- Registry ID: `5cdd9857-0c77-43bf-80d7-d0a8cb6f980b` +- Namespace: `select` +- Recipe key: `select.left` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.select.left` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/select/length.md b/wrangles-docs/registry-docs/select/length.md new file mode 100644 index 0000000..31c6687 --- /dev/null +++ b/wrangles-docs/registry-docs/select/length.md @@ -0,0 +1,90 @@ +--- +title: "Length" +description: "Calculate the lengths of data in a column. The length depends on the data type e.g. text will be the length of the text, lists will be the number of elements in the list." +sidebar_label: "Length" +slug: "/select/length" +--- + +# Length + +Calculate the lengths of data in a column. The length depends on the data type e.g. text will be the length of the text, lists will be the number of elements in the list. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of the input column(s). | — | +| `output` | No | string, array, null | Name of the output column(s). | `null` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Calculate the lengths of data in a column. The length depends on the data type e.g. text will be the length of the text, lists will be the number of elements in the list. + +## Migrated examples +#### Selecting the Length of Data Within a Column + +##### Recipe + +```yaml +wrangles: + - select.length: + input: Part Code + output: Part Code Length +``` + +
+ +
+ +##### Input Sample + +| Part Code | +| --- | +| 6202 | + +
+ +
+ +##### Output Sample + +| Part Code Length | +| --- | +| 4 | + +
+ +
+ +## Provenance + +- [WranglesPY select.length implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py) +- [Existing select.length Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/length.md) + +## Registry metadata + +- Registry ID: `4d7a5f66-0a4a-40e0-8298-d5c55754423d` +- Namespace: `select` +- Recipe key: `select.length` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.select.length` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/select/list-element.md b/wrangles-docs/registry-docs/select/list-element.md new file mode 100644 index 0000000..1ec8e0e --- /dev/null +++ b/wrangles-docs/registry-docs/select/list-element.md @@ -0,0 +1,96 @@ +--- +title: "List Element" +description: "Select a numbered element of a list (zero indexed)." +sidebar_label: "List Element" +slug: "/select/list-element" +--- + +# List Element + +Select a numbered element of a list (zero indexed). + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of the input column. | — | +| `output` | No | string, array, null | Name of the output column. | `null` | +| `element` | No | integer | The numbered element of the list to select. Starts from zero. This may use python slicing syntax to select a subset of the list. | `0` | +| `default` | No | string, number, array, object, boolean, null | Set the default value to return if the specified element doesn't exist. | `""` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Select a numbered element of a list (zero indexed). + +## Migrated examples +#### Selecting the Second Element in a List + +##### Recipe + +```yaml +wrangles: + - select.list_element: + input: Col1 + output: Second Element + element: 2 # Zero indexed + default: F +``` + +
+ +
+ +##### Input Sample + +| Col1 | +| --- | +| ['A', 'B', 'C'] | +| ['D', 'E'] | + +
+ +
+ +##### Output Sample + +| Third Element | +| --- | +| C | +| F | + +
+ +
+ +## Provenance + +- [WranglesPY select.list_element implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py) +- [Existing select.list_element Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/list-element.md) + +## Registry metadata + +- Registry ID: `ec40495d-d29a-4f62-86dd-eafa43cf388a` +- Namespace: `select` +- Recipe key: `select.list_element` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.select.list_element` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/select/right.md b/wrangles-docs/registry-docs/select/right.md new file mode 100644 index 0000000..0384bbc --- /dev/null +++ b/wrangles-docs/registry-docs/select/right.md @@ -0,0 +1,92 @@ +--- +title: "Right" +description: "Return characters from the right of text. Strings shorter than the length defined will be unaffected." +sidebar_label: "Right" +slug: "/select/right" +--- + +# Right + +Return characters from the right of text. Strings shorter than the length defined will be unaffected. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of the column(s) to edit. | — | +| `length` | Yes | integer | Number of characters to include from the right. If negative, this will remove the specified number of characters from the right. May not equal 0. | — | +| `output` | No | string, array, null | Name of the output column(s). | `null` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Select characters from the right of the input. Using a negative length reverses the side of selection, selecting from the left. + +## Migrated examples +#### Selecting the Three Rightmost Elements + +##### Recipe + +```yaml +wrangles: + - select.right: + input: Column + output: Result + length: 3 +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| pudding | + +
+ +
+ +##### Output Sample + +| Result | +| --- | +| ing | + +
+ +
+ +## Provenance + +- [WranglesPY select.right implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py) +- [Existing select.right Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/right.md) + +## Registry metadata + +- Registry ID: `89ee82ec-3bc5-4bfa-899b-7a1260ef9bdb` +- Namespace: `select` +- Recipe key: `select.right` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.select.right` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/select/sample.md b/wrangles-docs/registry-docs/select/sample.md new file mode 100644 index 0000000..d79ac89 --- /dev/null +++ b/wrangles-docs/registry-docs/select/sample.md @@ -0,0 +1,129 @@ +--- +title: "Sample" +description: "Return a random sample of the rows." +sidebar_label: "Sample" +slug: "/select/sample" +--- + +# Sample + +Return a random sample of the rows. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `rows` | Yes | integer, number | If a whole number, will select that number of rows. If a decimal between 0 and 1 will select that fraction of the rows e.g. 0.1 => 10% of rows will be returned. | — | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Return a random sample of the rows + +## Migrated examples +#### Selecting 2 Random Rows + +##### Recipe + +```yaml +wrangles: + - select.sample: + rows: 2 +``` + +
+ +
+ +##### Input Sample + +| Product | Manufacturer | +| --- | --- | +| Ball Bearing | SKF | +| Bearing Race | Timken | +| Needle Bearing | Acme Bearings | +| Roller Bearing | General Bearing Co. | + +
+ +
+ +##### Output Sample + +| Product | Manufacturer | +| --- | --- | +| Ball Bearing | SKF | +| Needle Bearing | Acme Bearings | + +
+ +
+ +#### Selecting a Random 25% of All Rows + +##### Recipe + +```yaml +wrangles: + - select.sample: + rows: .25 +``` + +
+ +
+ +##### Input Sample + +| Product | Manufacturer | +| --- | --- | +| Ball Bearing | SKF | +| Bearing Race | Timken | +| Needle Bearing | Acme Bearings | +| Roller Bearing | General Bearing Co. | + +
+ +
+ +##### Output Sample + +| Product | Manufacturer | +| --- | --- | +| Needle Bearing | Acme Bearings | + +
+ +
+ +## Provenance + +- [WranglesPY select.sample implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py) +- [Existing select.sample Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/sample.md) + +## Registry metadata + +- Registry ID: `95a84ab6-a66e-450f-8a4a-7a87e3a77932` +- Namespace: `select` +- Recipe key: `select.sample` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.select.sample` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/select/substring.md b/wrangles-docs/registry-docs/select/substring.md new file mode 100644 index 0000000..9ba1f16 --- /dev/null +++ b/wrangles-docs/registry-docs/select/substring.md @@ -0,0 +1,166 @@ +--- +title: "Substring" +description: "Return characters from the middle of text." +sidebar_label: "Substring" +slug: "/select/substring" +--- + +# Substring + +Return characters from the middle of text. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of the column(s) to edit. | — | +| `start` | No | integer, null | The position of the first character to select. If ommited will start from the beginning and length must be provided. | `null` | +| `length` | No | integer, null | The length of the string to select. If ommited will select to the end of the string and start must be provided. | `null` | +| `output` | No | string, array, null | Name of the output column(s). | `null` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Return characters from the middle of text. + +## Migrated examples +#### Selecting a Substring With Start and Length + +##### Recipe + +```yaml +wrangles: + - select.substring: + input: Column + output: Result + start: 2 + length: 3 +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| pudding | + +
+ +
+ +##### Output Sample + +| Result | +| --- | +| udd | + +
+ +
+ +#### Selecting a Substring With Start Only + +##### Recipe + +```yaml +wrangles: + - select.substring: + input: Column + output: Result + start: 2 +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| pudding | + +
+ +
+ +##### Output Sample + +| Result | +| --- | +| udding | + +
+ +
+ +#### Selecting a Substring With Length Only + +##### Recipe + +```yaml +wrangles: + - select.substring: + input: Column + output: Result + length: 3 +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| pudding | + +
+ +
+ +##### Output Sample + +| Result | +| --- | +| pud | + +
+ +
+ +## Provenance + +- [WranglesPY select.substring implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py) +- [Existing select.substring Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/substring.md) + +## Registry metadata + +- Registry ID: `8befddf8-602e-4fa9-8f16-4c547210ebec` +- Namespace: `select` +- Recipe key: `select.substring` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.select.substring` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/select/tail.md b/wrangles-docs/registry-docs/select/tail.md new file mode 100644 index 0000000..ba07a82 --- /dev/null +++ b/wrangles-docs/registry-docs/select/tail.md @@ -0,0 +1,92 @@ +--- +title: "Tail" +description: "Return the last n rows." +sidebar_label: "Tail" +slug: "/select/tail" +--- + +# Tail + +Return the last n rows. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `n` | Yes | integer | Number of rows to return. | — | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Return the last n rows + +## Migrated examples +#### Selecting The Last n Rows + +##### Recipe + +```yaml +wrangles: + - select.tail: + n: 2 +``` + +
+ +
+ +##### Input Sample + +| Product | Manufacturer | +| --- | --- | +| Ball Bearing | SKF | +| Bearing Race | Timken | +| Needle Bearing | Acme Bearings | +| Roller Bearing | General Bearing Co. | + +
+ +
+ +##### Output Sample + +| Product | Manufacturer | +| --- | --- | +| Needle Bearing | Acme Bearings | +| Roller Bearing | General Bearing Co. | + +
+ +
+ +## Provenance + +- [WranglesPY select.tail implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py) +- [Existing select.tail Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/tail.md) + +## Registry metadata + +- Registry ID: `60853759-c160-49a4-87eb-036516a9d823` +- Namespace: `select` +- Recipe key: `select.tail` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.select.tail` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/select/threshold.md b/wrangles-docs/registry-docs/select/threshold.md new file mode 100644 index 0000000..1718f62 --- /dev/null +++ b/wrangles-docs/registry-docs/select/threshold.md @@ -0,0 +1,94 @@ +--- +title: "Threshold" +description: "Select the first option if it exceeds a given threshold, else the second option." +sidebar_label: "Threshold" +slug: "/select/threshold" +--- + +# Threshold + +Select the first option if it exceeds a given threshold, else the second option. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | array | List of the input columns to select from. | — | +| `output` | Yes | string | Name of the output column. | — | +| `threshold` | Yes | number | Threshold above which to choose the first option, otherwise the second. | — | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Select the first option if it exceeds a given threshold, else the second option. + +## Migrated examples +#### Selecting Results Above a Threshold + +##### Recipe + +```yaml +wrangles: + - select.threshold: + input: + - Col1 + - Col2 + output: Result + threshold: .77 +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | +| --- | --- | +| ['A', 0.6] | ['B', 0.79] | + +
+ +
+ +##### Output Sample + +| Result | +| --- | +| B | + +
+ +
+ +## Provenance + +- [WranglesPY select.threshold implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py) +- [Existing select.threshold Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/threshold.md) + +## Registry metadata + +- Registry ID: `af2a5dcc-0ec0-48d7-8fb4-f58d9c5391d2` +- Namespace: `select` +- Recipe key: `select.threshold` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.select.threshold` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/similarity.md b/wrangles-docs/registry-docs/similarity.md new file mode 100644 index 0000000..2da662f --- /dev/null +++ b/wrangles-docs/registry-docs/similarity.md @@ -0,0 +1,110 @@ +--- +title: "Similarity" +description: "Calculate the cosine similarity of two vectors." +sidebar_label: "Similarity" +slug: "/similarity" +--- + +# Similarity + +Calculate the cosine similarity of two vectors. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | array | Two columns of vectors to compare the similarity of. | — | +| `output` | Yes | string | Name of the output column. | — | +| `method` | No | string; one of: cosine, adjusted cosine, euclidean | The type of similarity to calculate (cosine or euclidean). Adjusted cosine adjusts the default cosine calculation to cover a range of 0-1 for typical comparisons. | `"cosine"` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Calculate the similarity of two vectors. + +:::info +Similarity only works on vectors. To produce vectors from a column of strings, use `create.embeddings` first. +::: + +## Migrated examples +#### Similarity Between Embeddings + +##### Recipe + +```yaml +wrangles: + - create.embeddings: + input: col1 + api_key: ${my_key} + output: col1 embeddings + + - create.embeddings: + input: col2 + api_key: ${my_key} + output: col2 embeddings + + - similarity: + input: + - col1 embeddings + - col2 embeddings + output: similarity + method: adjusted cosine +``` + +
+ +
+ +##### Input Sample + +| col1 | col2 | +| --- | --- | +| SKF | Timken | +| Ball Bearing | Roller Bearing | + +
+ +
+ +##### Output Sample + +| col1 | col2 | col1 embeddings | col2 embeddings | similarity | +| --- | --- | --- | --- | --- | +| SKF | Timken | [1, 2, 3, 4] | [4, 3, 2, 1] | 0.158931 | +| Ball Bearing | Roller Bearing | [5, 6, 7, 8] | [5, 6, 7, 9] | 0.942437 | + +
+ +
+ +## Provenance + +- [WranglesPY similarity implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py) +- [Existing similarity Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compare/_sources/similarity.md) + +## Registry metadata + +- Registry ID: `7c733344-4cce-4938-8013-53742fb46a90` +- Namespace: root-level runtime key +- Recipe key: `similarity` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.main.similarity` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/sort.md b/wrangles-docs/registry-docs/sort.md new file mode 100644 index 0000000..89af6ad --- /dev/null +++ b/wrangles-docs/registry-docs/sort.md @@ -0,0 +1,99 @@ +--- +title: "Sort" +description: "Sort the data." +sidebar_label: "Sort" +slug: "/sort" +--- + +# Sort + +Sort the data. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `ignore_index` | No | boolean | Ignore Index value accepted by the runtime. | `true` | +| `by` | Yes | string, array | Name or list of the column(s) to sort by. | — | +| `ascending` | No | boolean, array | Sort ascending vs. descending. Specify a list to sort multiple columns in different orders. If this is a list of bools then it must match the length of the by. | — | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Sort the data + +## Migrated examples +#### Replacing Abbreviations + +##### Recipe + +```yaml +wrangles: + - sort: + by: Price + ascending: true +``` + +
+ +
+ +##### Input Sample + +| Item | Price | +| --- | --- | +| Hammer | 11.99 | +| Chisel | 4.99 | +| Drill | 29.99 | +| Wrench | 6.99 | +| Saw | 13.99 | + +
+ +
+ +##### Output Sample + +| Item | Price | +| --- | --- | +| Chisel | 4.99 | +| Wrench | 6.99 | +| Hammer | 11.99 | +| Saw | 13.99 | +| Drill | 29.99 | + +
+ +
+ +## Provenance + +- [WranglesPY sort implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/pandas.py) +- [Existing sort Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/sort.md) + +## Registry metadata + +- Registry ID: `1dcf06ad-898a-4d83-862c-4774be37a687` +- Namespace: root-level runtime key +- Recipe key: `sort` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.pandas.sort` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/split/dictionary.md b/wrangles-docs/registry-docs/split/dictionary.md new file mode 100644 index 0000000..cefc7a7 --- /dev/null +++ b/wrangles-docs/registry-docs/split/dictionary.md @@ -0,0 +1,270 @@ +--- +title: "Dictionary" +description: "Split one or more dictionaries into columns. The dictionary keys will be returned as the new column headers. If the dictionaries contain overlapping values, the last value will be returned." +sidebar_label: "Dictionary" +slug: "/split/dictionary" +--- + +# Dictionary + +Split one or more dictionaries into columns. The dictionary keys will be returned as the new column headers. If the dictionaries contain overlapping values, the last value will be returned. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name or lists of the column(s) containing dictionaries to be split. If providing multiple dictionaries and the dictionaries contain overlapping values, the last value will be returned. | — | +| `output` | No | string, array, null | In columns output_format, this is an optional subset of keys to extract from the dictionary. If not provided, all keys will be returned. Columns can be renamed with the following syntax: output: - key1: new_column_name1 - key2: new_column_name2 In to_lists output_format, this must be two output columns for the keys and values lists. If not provided, Keys and Values will be used. | `null` | +| `default` | No | object, null | Provide a set of default headings and values if they are not found within the input. | `null` | +| `output_format` | No | string; one of: columns, to_lists | How to split the dictionary. columns creates one output column for each dictionary key. to_lists creates two output columns containing lists of keys and values. | `"columns"` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Split a dictionary into columns. The dictionary keys are used as the new column headers. + +## Migrated examples +#### Splitting an Entire Dictionary + +##### Recipe + +```yaml +wrangles: + - split.dictionary: + input: Column + # Output not required +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | + +
+ +
+ +##### Output Sample + +| Col1 | Col2 | Col3 | +| --- | --- | --- | +| A | B | C | + +
+ +
+ +#### Choosing Specific Keys by Name + +##### Recipe + +```yaml +wrangles: + - split.dictionary: + input: Column + output: Col2 +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | + +
+ +
+ +##### Output Sample + +| Col2 | +| --- | +| B | + +
+ +
+ +#### Using a Wildcard Output to Choose Specific Keys + +##### Recipe + +```yaml +wrangles: + - split.dictionary: + input: Column + output: Col* +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| \{'Col1': 'A', 'Col2': 'B', 'Other': 'C'\} | + +
+ +
+ +##### Output Sample + +| Col1 | Col2 | +| --- | --- | +| A | B | + +
+ +
+ +#### Using Regular Expressions to Choose Specific Keys + +##### Recipe + +```yaml +wrangles: + - split.dictionary: + input: Column + output: "regex: .*3" +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | + +
+ +
+ +##### Output Sample + +| Col3 | +| --- | +| C | + +
+ +
+ +#### Choosing Specific Keys While Renaming the Output + +##### Recipe + +```yaml +wrangles: + - split.dictionary: + input: Column + output: + - Col1: Column 1 + - Col2: Column 2 +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | + +
+ +
+ +##### Output Sample + +| Column 1 | Column 2 | +| --- | --- | +| A | B | + +
+ +
+ +#### Using a Wildcard While Renaming + +##### Recipe + +```yaml +wrangles: + - split.dictionary: + input: Column + output: + - Col*: Column * +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | + +
+ +
+ +##### Output Sample + +| Column 1 | Column 2 | Column 3 | +| --- | --- | --- | +| A | B | C | + +
+ +
+ +## Provenance + +- [WranglesPY split.dictionary implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/split.py) +- [Existing split.dictionary Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/split/_sources/dictionary.md) + +## Registry metadata + +- Registry ID: `06ca98e4-d026-43f7-84eb-af246d401ba9` +- Namespace: `split` +- Recipe key: `split.dictionary` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.split.dictionary` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/split/list.md b/wrangles-docs/registry-docs/split/list.md new file mode 100644 index 0000000..4767569 --- /dev/null +++ b/wrangles-docs/registry-docs/split/list.md @@ -0,0 +1,128 @@ +--- +title: "List" +description: "Split a list in a single column to multiple columns." +sidebar_label: "List" +slug: "/split/list" +--- + +# List + +Split a list in a single column to multiple columns. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer | Name of the column to be split. | — | +| `output` | Yes | string, array | Name of column(s) for the results. If providing a single column, use a wildcard (*) to indicate a incrementing integer. | — | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Split a list into multiple columns. If only one output is given, `split.list` returns the same list it was given, so output should be a list of columns or a column name with a wildcard (`*`). + +## Migrated examples +#### Using a Wildcard + +##### Recipe + +```yaml +wrangles: + - split.list: + input: Column + output: Column* +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| ['A', 'B', 'C'] | + +
+ +
+ +##### Output Sample + +| Column1 | Column2 | Column3 | +| --- | --- | --- | +| A | B | C | + +
+ +
+ +#### Named Columns + +##### Recipe + +```yaml +wrangles: + - split.list: + input: Column + output: + - Heading A + - Heading B + - Heading C +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| ['A', 'B', 'C'] | + +
+ +
+ +##### Output Sample + +| Heading A | Heading B | Heading C | +| --- | --- | --- | +| A | B | C | + +
+ +
+ +## Provenance + +- [WranglesPY split.list implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/split.py) +- [Existing split.list Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/split/_sources/list.md) + +## Registry metadata + +- Registry ID: `3260b9f7-aae2-499f-8004-d211c2cf643e` +- Namespace: `split` +- Recipe key: `split.list` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.split.list` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/split/text.md b/wrangles-docs/registry-docs/split/text.md new file mode 100644 index 0000000..3dc4bb6 --- /dev/null +++ b/wrangles-docs/registry-docs/split/text.md @@ -0,0 +1,247 @@ +--- +title: "Text" +description: "Split a string to multiple columns or a list." +sidebar_label: "Text" +slug: "/split/text" +--- + +# Text + +Split a string to multiple columns or a list. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string | Name of the column to be split. | — | +| `output` | No | string, array, null | Name of the output column(s) If a single column is provided, the results will be returned as a list If multiple columns are listed, the results will be separated into the columns. If omitted, will overwrite the input. | `null` | +| `char` | No | string | Set the character(s) to split on. Default comma (,) Can also prefix with "regex:" to split on a pattern. | `","` | +| `pad` | No | boolean, null | Choose whether to pad to ensure a consistent length. Default true if outputting to columns, false for lists. | `null` | +| `element` | No | string, integer, null | Select a specific element or range after splitting using slicing syntax. e.g. 0, ":5", "5:", "2:8:2". | `null` | +| `inclusive` | No | boolean | If true, include the split character in the output. Default False. | `false` | +| `skip_empty` | No | boolean | Whether to skip empty values. | `false` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Split text strings on certain characters. The text can be split into either multiple columns or a list. + +## Migrated examples +#### To a List + +##### Recipe + +```yaml +wrangles: + - split.text: + input: Column1 + output: Column2 + char: ', ' +``` + +
+ +
+ +##### Input Sample + +| Column1 | +| --- | +| Hello, Wrangles! | + +
+ +
+ +##### Output Sample + +| Column2 | +| --- | +| ['Hello', 'Wrangles!'] | + +
+ +
+ +#### Split Using Regex + +##### Recipe + +```yaml +# Split on x, case insensitive. +wrangles: + - split.text: + input: Col1 + output: Col2 + char: 'regex:(?i)x' +``` + +
+ +
+ +##### Input Sample + +| Col1 | +| --- | +| 1x2 | +| 1X2 | + +
+ +
+ +##### Output Sample + +| Col2 | +| --- | +| ['1', '2'] | +| ['1', '2'] | + +
+ +
+ +#### Slice the Output + +##### Recipe + +```yaml +wrangles: + - split.text: + input: Column1 + output: Column2 + char: ', ' + element: 0 +``` + +
+ +
+ +##### Input Sample + +| Column1 | +| --- | +| Hello, Wrangles! | + +
+ +
+ +##### Output Sample + +| Column2 | +| --- | +| Hello | + +
+ +
+ +#### Split to Columns (Wildcard) + +##### Recipe + +```yaml +wrangles: + - split.text: + input: Col + output: Col* # Optional + char: ', ' +``` + +
+ +
+ +##### Input Sample + +| Col | +| --- | +| Hello, Wrangles! | + +
+ +
+ +##### Output Sample + +| Col1 | Col2 | +| --- | --- | +| Hello | Wrangles! | + +
+ +
+ +#### Split to Columns (Named) + +##### Recipe + +```yaml +wrangles: + - split.text: + input: Col + output: + - Col 1 + - Col 2 + - Col 3 + char: ', ' +``` + +
+ +
+ +##### Input Sample + +| Col | +| --- | +| Wrangles, are, Cool! | + +
+ +
+ +##### Output Sample + +| Col 1 | Col 2 | Col 3 | +| --- | --- | --- | +| Wrangles | are | Cool! | + +
+ +
+ +## Provenance + +- [WranglesPY split.text implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/split.py) +- [Existing split.text Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/split/_sources/text.md) + +## Registry metadata + +- Registry ID: `e76e43f7-d129-4bf8-87b4-a304a378b130` +- Namespace: `split` +- Recipe key: `split.text` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.split.text` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/split/tokenize.md b/wrangles-docs/registry-docs/split/tokenize.md new file mode 100644 index 0000000..ab726f2 --- /dev/null +++ b/wrangles-docs/registry-docs/split/tokenize.md @@ -0,0 +1,127 @@ +--- +title: "Tokenize" +description: "Split text into tokens. A variety of methods are available. The default method is to split on spaces." +sidebar_label: "Tokenize" +slug: "/split/tokenize" +--- + +# Tokenize + +Split text into tokens. A variety of methods are available. The default method is to split on spaces. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Column(s) to be split into tokens. | — | +| `output` | No | string, array, null | Name of the output column. | `null` | +| `method` | No | string; one of: space, boundary, boundary_ignore_space or string | Method to split the list. Options include `space`, `boundary`, `boundary_ignore_space`, custom functions as `custom.`, or regex patterns as `regex:`. | `"space"` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Tokenize elements in a list or string into individual tokens. + +## Migrated examples +#### Tokenizing a String + +##### Recipe + +```yaml +wrangles: + - split.tokenize: + input: Materials + output: Tokenized List +``` + +
+ +
+ +##### Input Sample + +| Materials | +| --- | +| Stainless Steel Oak Wood | + +
+ +
+ +##### Output Sample + +| Tokenized List | +| --- | +| ['Stainless', 'Steel', 'Oak', 'Wood'] | + +
+ +
+ + +#### Tokenizing a List + +##### Recipe + +```yaml +wrangles: + - split.tokenize: + input: Materials + output: Tokenized List +``` + +
+ +
+ +##### Input Sample + +| Materials | +| --- | +| ['Stainless Steel', 'Oak Wood'] | + +
+ +
+ +##### Output Sample + +| Tokenized List | +| --- | +| ['Stainless', 'Steel', 'Oak', 'Wood'] | + +
+ +
+ +## Provenance + +- [WranglesPY split.tokenize implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/split.py) +- [Existing split.tokenize Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/split/_sources/tokenize.md) + +## Registry metadata + +- Registry ID: `6cc88418-ae0c-43f6-84ee-31e0d5f838c3` +- Namespace: `split` +- Recipe key: `split.tokenize` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.split.tokenize` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/sql.md b/wrangles-docs/registry-docs/sql.md new file mode 100644 index 0000000..fb889e5 --- /dev/null +++ b/wrangles-docs/registry-docs/sql.md @@ -0,0 +1,101 @@ +--- +title: "SQL" +description: "Apply a SQL command to the current dataframe. Only SELECT statements are supported - the result will be the output." +sidebar_label: "SQL" +slug: "/sql" +--- + +# SQL + +Apply a SQL command to the current dataframe. Only SELECT statements are supported - the result will be the output. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `command` | Yes | string | SQL Command. The table is called df. For specific SQL syntax, this uses the SQLite dialect. | — | +| `params` | No | array, object, null | Variables to use in conjunctions with query. This allows the query to be parameterized. This uses sqlite syntax (? or :name). | `null` | +| `preserve_index` | No | boolean | Preserve Index value accepted by the runtime. | `false` | +| `preserve_data_types` | No | boolean | Preserve Data Types value accepted by the runtime. | `true` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Apply a SQL command to the current dataframe. Only `SELECT` statements are supported; the result becomes the output. The current table is called `df`. + +:::info +SQL does not currently work with objects. If your table contains objects, use `convert.to_json` before using SQL. SQL is not compatible with `where` filtering. +::: + +## Migrated examples +#### Selecting a Subset of Data + +##### Recipe + +```yaml +wrangles: + - sql: + command: | + SELECT header1, header2 + FROM df + WHERE header1 >= 2 +``` + +
+ +
+ +##### Input Sample + +| header1 | header2 | header3 | +| --- | --- | --- | +| 1 | a | x | +| 2 | b | y | +| 3 | c | z | + +
+ +
+ +##### Output Sample + +| header1 | header2 | +| --- | --- | +| 2 | b | +| 3 | c | + +
+ +
+ +## Provenance + +- [WranglesPY sql implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py) +- [Existing sql Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compute/_sources/sql.md) + +## Registry metadata + +- Registry ID: `467a06b1-a697-4d31-8061-7d83a719fd79` +- Namespace: root-level runtime key +- Recipe key: `sql` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.main.sql` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/standardize.md b/wrangles-docs/registry-docs/standardize.md new file mode 100644 index 0000000..335f51a --- /dev/null +++ b/wrangles-docs/registry-docs/standardize.md @@ -0,0 +1,95 @@ +--- +title: "Standardize" +description: "Standardize data using a DIY or bespoke standardization wrangle. Requires WrangleWorks Account and Subscription." +sidebar_label: "Standardize" +slug: "/standardize" +--- + +# Standardize + +Standardize data using a DIY or bespoke standardization wrangle. Requires WrangleWorks Account and Subscription. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name or list of input columns. | — | +| `model_id` | Yes | string, array | The ID of the wrangle to use (do not include 'find' and 'replace'). | — | +| `output` | No | string, array, null | Name or list of output columns. | `null` | +| `case_sensitive` | No | boolean | Allows the wrangle to be case sensitive if set to True, default is False. | `false` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | Yes | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Run a standardize wrangle, such as one that expands abbreviations. A standardization wrangle must be trained first. + +## Migrated examples +#### Replacing Abbreviations + +##### Recipe + +```yaml +wrangles: + - standardize: + input: Abbrev + output: Abbreviations + model_id: code_here +``` + +
+ +
+ +##### Input Sample + +| Abbrev | +| --- | +| ASAP | +| ETA | + +
+ +
+ +##### Output Sample + +| Abbreviations | +| --- | +| As Soon As Possible | +| Estimated Time of Arrival | + +
+ +
+ +## Provenance + +- [WranglesPY standardize implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py) +- [Existing standardize Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/standardize.md) + +## Registry metadata + +- Registry ID: `53cd3fdd-24e2-4411-8655-6014b92a3f3a` +- Namespace: root-level runtime key +- Recipe key: `standardize` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.main.standardize` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/standardize/clean.md b/wrangles-docs/registry-docs/standardize/clean.md new file mode 100644 index 0000000..c089ffa --- /dev/null +++ b/wrangles-docs/registry-docs/standardize/clean.md @@ -0,0 +1,67 @@ +--- +title: "Standardize Clean" +description: "Repair common encoding, Unicode, HTML character reference, control character, and whitespace problems locally." +sidebar_label: "Standardize Clean" +slug: "/standardize/clean" +--- + +# Standardize Clean + +Repair common encoding, Unicode, HTML character reference, control character, and whitespace problems locally. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name or list of input columns. | — | +| `output` | No | string, integer, array, null | Name or list of output columns. Defaults to overwriting input. | `null` | +| `fix_encoding` | No | boolean | Repair mojibake and other reversible encoding errors. | `true` | +| `unescape_html` | No | boolean or string; one of: auto | Decode HTML character references. Auto avoids decoding text that appears to contain HTML markup. | `"auto"` | +| `normalization` | No | string; one of: NFC, NFKC, NFD, NFKD, null | Unicode normalization form. | `"NFC"` | +| `fix_character_width` | No | boolean | Normalize fullwidth and halfwidth characters. | `true` | +| `uncurl_quotes` | No | boolean | Replace typographic quotes with straight quotes. | `true` | +| `remove_control_chars` | No | boolean | Remove C0 and C1 control characters. | `true` | +| `collapse_whitespace` | No | boolean | Collapse runs of Unicode whitespace. | `true` | +| `preserve_line_breaks` | No | boolean | Preserve line breaks while collapsing other whitespace. | `false` | +| `trim` | No | boolean | Remove leading and trailing whitespace. | `true` | +| `separator` | No | string | Text used to join multiple input columns into one output. | `" "` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +## Behavior + +Repair common encoding, Unicode, HTML character reference, control character, and whitespace problems locally. + +This first-pass guidance is derived from the callable signature and its embedded Python schema docstring. + +## Provenance + +- [WranglesPY standardize.clean implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/standardize.py) + +## Registry metadata + +- Registry ID: pending database assignment +- Namespace: `standardize` +- Recipe key: `standardize.clean` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.standardize.clean` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/standardize/custom.md b/wrangles-docs/registry-docs/standardize/custom.md new file mode 100644 index 0000000..e642ce5 --- /dev/null +++ b/wrangles-docs/registry-docs/standardize/custom.md @@ -0,0 +1,59 @@ +--- +title: "Standardize Custom" +description: "Standardize data using a DIY or bespoke standardization wrangle. Requires WrangleWorks Account and Subscription." +sidebar_label: "Standardize Custom" +slug: "/standardize/custom" +--- + +# Standardize Custom + +Standardize data using a DIY or bespoke standardization wrangle. Requires WrangleWorks Account and Subscription. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name or list of input columns. | — | +| `model_id` | Yes | string, array | The ID of the wrangle to use (do not include 'find' and 'replace'). | — | +| `output` | No | string, array, null | Name or list of output columns. | `null` | +| `case_sensitive` | No | boolean | Allows the wrangle to be case sensitive if set to True, default is False. | `false` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | Yes | +| requires subscription | Yes | +| requires external api key | No | + +## Guidance + +## Behavior + +Standardize data using a DIY or bespoke standardization wrangle. Requires WrangleWorks Account and Subscription. + +This first-pass guidance is derived from the callable signature and its embedded Python schema docstring. + +## Provenance + +- [WranglesPY standardize.custom implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/standardize.py) + +## Registry metadata + +- Registry ID: pending database assignment +- Namespace: `standardize` +- Recipe key: `standardize.custom` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.standardize.custom` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/translate.md b/wrangles-docs/registry-docs/translate.md new file mode 100644 index 0000000..04cd0eb --- /dev/null +++ b/wrangles-docs/registry-docs/translate.md @@ -0,0 +1,95 @@ +--- +title: "Translate" +description: "Translate the input to a different language. Requires WrangleWorks Account and DeepL API Key (A free account for up to 500,000 characters per month is available)." +sidebar_label: "Translate" +slug: "/translate" +--- + +# Translate + +Translate the input to a different language. Requires WrangleWorks Account and DeepL API Key (A free account for up to 500,000 characters per month is available). + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `input` | Yes | string, integer, array | Name of the column to translate. | — | +| `output` | Yes | string, array | Name of the output column. | — | +| `target_language` | Yes | string; one of: Bulgarian, Chinese, Czech, Danish, Dutch, English (American), English (British), Estonian, Finnish, French, German, Greek, Hungarian, Italian, Japanese, Latvian, Lithuanian, Polish, Portuguese, Portuguese (Brazilian), Romanian, Russian, Slovak, Slovenian, Spanish, Swedish | Code of the language to translate to. | — | +| `source_language` | No | string; one of: Auto, Bulgarian, Chinese, Czech, Danish, Dutch, English, Estonian, Finnish, French, German, Greek, Hungarian, Italian, Japanese, Latvian, Lithuanian, Polish, Portuguese, Romanian, Russian, Slovak, Slovenian, Spanish, Swedish | Code of the language to translate from. If omitted, automatically detects the input language. | `"AUTO"` | +| `case` | No | string, null | Allow changing the case of the input prior to translation. | `null` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | Yes | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Translate the input column to another language. Powered by DeepL. + +## Migrated examples +#### Translating Spanish to English + +##### Recipe + +```yaml +wrangles: + - translate: + input: Español + output: English + source_language: Spanish + target_language: English (British) +``` + +
+ +
+ +##### Input Sample + +| Español | +| --- | +| ¡Hola Mundo! | + +
+ +
+ +##### Output Sample + +| English | +| --- | +| Hello World! | + +
+ +
+ +## Provenance + +- [WranglesPY translate implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py) +- [Existing translate Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/translate.md) + +## Registry metadata + +- Registry ID: `73c3ceb6-ffd8-4d74-8389-c83b99d33bb0` +- Namespace: root-level runtime key +- Recipe key: `translate` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.main.translate` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/transpose.md b/wrangles-docs/registry-docs/transpose.md new file mode 100644 index 0000000..430386b --- /dev/null +++ b/wrangles-docs/registry-docs/transpose.md @@ -0,0 +1,93 @@ +--- +title: "Transpose" +description: "Transpose the DataFrame (swap columns to rows)." +sidebar_label: "Transpose" +slug: "/transpose" +--- + +# Transpose + +Transpose the DataFrame (swap columns to rows). + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `header_column` | No | string, integer, null | Name or position of the column that will be used as the column headings for the transposed DataFrame. Default 0 (first column). Use header_column = null to not use any column as header. | `0` | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Transpose a dataframe. + +## Migrated examples +:::note +Transpose is not compatible with `where` filtering. +::: + +#### Transposing a Dataframe + +##### Recipe + +```yaml +wrangles: + - transpose: + header_column: Material +``` + +
+ +
+ +##### Input Sample + +| Material | Product Data | +| --- | --- | +| Ceramic | SKF ball brg | +| Rubber | brg seal | + +
+ +
+ +##### Output Sample + +| Material | Ceramic | Rubber | +| --- | --- | --- | +| Product Data | SKF ball brg | brg seal | + +
+ +
+ +## Provenance + +- [WranglesPY transpose implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/pandas.py) +- [Existing transpose Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/transform/_sources/transpose.md) + +## Registry metadata + +- Registry ID: `8716347f-f286-49b2-8a0b-cb73292e7475` +- Namespace: root-level runtime key +- Recipe key: `transpose` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.pandas.transpose` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/wrangles-docs/registry-docs/try.md b/wrangles-docs/registry-docs/try.md new file mode 100644 index 0000000..f218c63 --- /dev/null +++ b/wrangles-docs/registry-docs/try.md @@ -0,0 +1,91 @@ +--- +title: "Try" +description: "Try a list of wrangles and catch any errors that occur." +sidebar_label: "Try" +slug: "/try" +--- + +# Try + +Try a list of wrangles and catch any errors that occur. + +> Pilot Registry entry. Runtime contract status: `verified`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +| `wrangles` | Yes | array | List of wrangles to apply. | — | +| `retries` | No | integer | Number of times to retry the wrangles if an error occurs. Default 0. | `0` | +| `except` | No | object | An action to take if the wrangles encounter an error. This can contain a list of wrangles or a dictionary of column names and values. If except is not provided, the error will be logged and the recipe will continue. | — | +| `if` | No | string | Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`. | — | +| `where` | No | string | Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`. | — | +| `where_params` | No | array, object | Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`. | — | + +## Verified examples + +_No fixture-backed examples are currently available. See migrated examples under Guidance where present._ + +## Access + +| Requirement | Value | +| --- | --- | +| ai powered | No | +| requires account | No | +| requires subscription | No | +| requires external api key | No | + +## Guidance + +Run a list of wrangles and catch errors. When `except` is provided, its wrangles or fallback column values run after an error; otherwise, the error is logged and the recipe continues. + +## Migrated examples +#### Use Fallback Wrangles After an Error + +##### Recipe + +```yaml +wrangles: + - try: + wrangles: + - risky_wrangle: + input: column + except: + - backup_wrangle: + input: column +``` + +
+ +
+ +##### Input Sample + +_The input dataframe is passed to the primary wrangles._ + +
+ +
+ +##### Output Sample + +_The primary result is returned on success; the `except` result is returned after an error._ + +
+ +
+ +## Provenance + +- [WranglesPY try implementation](https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py) +- [Existing try Markdown](https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/utility/_sources/try.md) + +## Registry metadata + +- Registry ID: pending database assignment +- Namespace: root-level runtime key +- Recipe key: `try` +- Aliases: none +- Runtime symbol: `wrangles.recipe_wrangles.main.Try` +- Status: `active` +- Registry version: `0.1.0-pilot` diff --git a/my-docs-site/requirements.txt b/wrangles-docs/requirements.txt similarity index 100% rename from my-docs-site/requirements.txt rename to wrangles-docs/requirements.txt diff --git a/my-docs-site/run_recipe.py b/wrangles-docs/run_recipe.py similarity index 100% rename from my-docs-site/run_recipe.py rename to wrangles-docs/run_recipe.py diff --git a/wrangles-docs/scripts/bootstrap-registry.cjs b/wrangles-docs/scripts/bootstrap-registry.cjs new file mode 100644 index 0000000..5908155 --- /dev/null +++ b/wrangles-docs/scripts/bootstrap-registry.cjs @@ -0,0 +1,508 @@ +#!/usr/bin/env node + +const fs = require('node:fs/promises'); +const path = require('node:path'); +const yaml = require('js-yaml'); + +const siteRoot = path.resolve(__dirname, '..'); +const repositoryRoot = path.resolve(siteRoot, '..'); +const registryRoot = path.join(repositoryRoot, 'registry'); +const entriesRoot = path.join(registryRoot, 'wrangles'); +const runtimeManifestPath = path.join(registryRoot, 'runtime', 'wranglespy.json'); +const quasiRegistryRoot = path.join(siteRoot, 'wrangle-docs'); +const COMMON_CONTROLS = new Set(['if', 'where', 'where_params']); +const CURATED_KEYS = new Set(['convert.case', 'convert.data_type', 'convert.from_json']); +const ALL_JSON_TYPES = ['string', 'number', 'integer', 'boolean', 'array', 'object', 'null']; + +function posixPath(value) { + return value.split(path.sep).join('/'); +} + +function isObject(value) { + return value !== null && typeof value === 'object' && !Array.isArray(value); +} + +function hasOwn(value, key) { + return Object.prototype.hasOwnProperty.call(value, key); +} + +async function listFiles(root, suffix = '') { + const results = []; + for (const entry of await fs.readdir(root, {withFileTypes: true})) { + const filename = path.join(root, entry.name); + if (entry.isDirectory()) results.push(...await listFiles(filename, suffix)); + else if (!suffix || entry.name.endsWith(suffix)) results.push(filename); + } + return results.sort(); +} + +function splitMarkdownRow(line) { + const trimmed = line.trim(); + if (!trimmed.startsWith('|') || !trimmed.endsWith('|')) return []; + const cells = []; + let current = ''; + for (let index = 1; index < trimmed.length - 1; index += 1) { + if (trimmed[index] === '\\' && trimmed[index + 1] === '|') { + current += '|'; + index += 1; + } else if (trimmed[index] === '|') { + cells.push(current.trim()); + current = ''; + } else { + current += trimmed[index]; + } + } + cells.push(current.trim()); + return cells; +} + +function markdownTableAfter(source, marker) { + const lines = source.split(/\r?\n/); + const markerIndex = lines.findIndex((line) => line.trim() === marker); + if (markerIndex < 0) return []; + let headerIndex = markerIndex + 1; + while (headerIndex < lines.length && !lines[headerIndex].trim()) headerIndex += 1; + if (!lines[headerIndex]?.trim().startsWith('|')) return []; + + const headers = splitMarkdownRow(lines[headerIndex]); + const rows = []; + for (let index = headerIndex + 2; index < lines.length; index += 1) { + if (!lines[index].trim().startsWith('|')) break; + const cells = splitMarkdownRow(lines[index]); + if (cells.length === headers.length) { + rows.push(Object.fromEntries(headers.map((header, cellIndex) => [header, cells[cellIndex]]))); + } + } + return rows; +} + +function fieldTable(rows) { + return Object.fromEntries(rows.map((row) => [row.Field, row.Value])); +} + +function stripCode(value) { + const text = String(value || '').trim(); + return text.startsWith('`') && text.endsWith('`') ? text.slice(1, -1) : text; +} + +function yesNo(value) { + return value === 'Yes' ? true : value === 'No' ? false : null; +} + +function compactText(value) { + return String(value || '') + .replace(/\s+/g, ' ') + .replace(/\bagaisnst\b/gi, 'against') + .replace(/\bwarniing\b/gi, 'warning') + .trim(); +} + +function sentence(value) { + const text = compactText(value); + if (!text) return text; + const capitalized = text[0].toUpperCase() + text.slice(1); + return /[.!?`]$/.test(capitalized) ? capitalized : `${capitalized}.`; +} + +function humanize(value) { + return value + .replaceAll('_', ' ') + .replace(/\b\w/g, (character) => character.toUpperCase()); +} + +function kebab(value) { + return value.replaceAll('_', '-').replace(/[^a-z0-9-]+/g, '-').replace(/^-|-$/g, ''); +} + +function normalizeTag(value) { + return kebab(String(value).trim().toLowerCase()); +} + +function schemaObject(schema) { + if (!isObject(schema)) return null; + if (isObject(schema.properties)) return schema; + if (Array.isArray(schema.anyOf)) { + return [...schema.anyOf].reverse().find((option) => isObject(option?.properties)) || schema; + } + return schema; +} + +function schemaProperties(schema) { + return schemaObject(schema)?.properties || {}; +} + +function schemaRequired(schema) { + return new Set(schemaObject(schema)?.required || []); +} + +function schemaDescription(schema) { + return sentence(schemaObject(schema)?.description || ''); +} + +function cloneSchema(value) { + if (Array.isArray(value)) return value.map(cloneSchema); + if (!isObject(value)) return value; + const result = {}; + for (const [key, item] of Object.entries(value)) { + if (['description', 'title', 'default', '$comment'].includes(key)) continue; + if (key === 'type') { + const types = Array.isArray(item) ? item : [item]; + const normalized = types.flatMap((type) => { + if (type === null || type === 'null') return ['null']; + return type === 'datetime' ? ['string'] : [type]; + }); + result.type = [...new Set(normalized)]; + if (result.type.length === 1) result.type = result.type[0]; + } else if (key === 'items' && Array.isArray(item) && item.length === 1) { + result.items = cloneSchema(item[0]); + } else { + result[key] = cloneSchema(item); + } + } + return result; +} + +function annotationTypes(annotation) { + if (!annotation || annotation.includes('') || /\bAny\b/.test(annotation)) { + return []; + } + const types = []; + if (/\bstr\b/.test(annotation)) types.push('string'); + if (/\bbool\b/.test(annotation)) types.push('boolean'); + if (/\bint\b/.test(annotation)) types.push('integer'); + if (/\bfloat\b/.test(annotation)) types.push('number'); + if (/\b(?:list|tuple|Sequence)\b/i.test(annotation)) types.push('array'); + if (/\b(?:dict|Mapping)\b/i.test(annotation)) types.push('object'); + if (/None/.test(annotation)) types.push('null'); + return [...new Set(types)]; +} + +function defaultType(value) { + if (value === null) return 'null'; + if (Array.isArray(value)) return 'array'; + if (isObject(value)) return 'object'; + if (Number.isInteger(value)) return 'integer'; + if (typeof value === 'number') return 'number'; + return typeof value; +} + +function withCodeTypes(schema, runtimeParameter) { + const result = cloneSchema(schema || {}); + const inferredTypes = annotationTypes(runtimeParameter?.annotation); + if (inferredTypes.length && !result.anyOf && !result.oneOf && !result.allOf && !result.$ref) { + result.type = inferredTypes.length === 1 ? inferredTypes[0] : inferredTypes; + } + if (!Object.keys(result).length) { + const types = inferredTypes.length ? inferredTypes : ( + runtimeParameter && hasOwn(runtimeParameter, 'default') + ? [defaultType(runtimeParameter.default)] + : ALL_JSON_TYPES + ); + result.type = types.length === 1 ? types[0] : types; + } + if (runtimeParameter && hasOwn(runtimeParameter, 'default') && runtimeParameter.default === null) { + if (result.anyOf || result.oneOf) { + const keyword = result.anyOf ? 'anyOf' : 'oneOf'; + if (!result[keyword].some((option) => option?.type === 'null')) { + result[keyword].push({type: 'null'}); + } + } else if (result.type) { + const types = Array.isArray(result.type) ? result.type : [result.type]; + result.type = [...new Set([...types, 'null'])]; + } + } + return result; +} + +const PARAMETER_DESCRIPTIONS = { + input: 'Name, index, or list of input columns.', + output: 'Name or list of output columns.', + model_id: 'Identifier of the saved model to use.', + wrangles: 'Wrangle steps to run.', + variables: 'Recipe variables available while this wrangle runs.', + functions: 'Custom functions available while this wrangle runs.', + use_multiprocessing: 'Use process-based workers instead of threads. This is an advanced runtime option.', + categoryLabel: 'Prefix for output columns that identify the source price-break category.', + valueLabel: 'Prefix for output columns that contain the corresponding price-break value.', +}; + +const DESCRIPTION_OVERRIDES = { + 'format.price_breaks': 'Expand non-empty price-break cells into paired category and value columns.', + maths: 'Deprecated alias for `math`; evaluate an expression and write its result to an output column.', + recipe: 'Run another recipe as a wrangle against the current dataframe.', +}; + +function parameterDescription(name, embedded, quasi) { + return sentence( + embedded?.description || + quasi?.description || + PARAMETER_DESCRIPTIONS[name] || + `${humanize(name)} value accepted by the runtime`, + ); +} + +function parameterRole(name) { + if (name === 'input' || name === 'by' || name.endsWith('_column')) return 'column-selector'; + if (name === 'output' || name.startsWith('output_')) return 'column-output'; + if (name === 'model_id') return 'model-reference'; + if (name.includes('api_key') || name.includes('secret')) return 'credential'; + if (name === 'wrangles') return 'nested-wrangles'; + if (name === 'variables') return 'variables'; + if (name === 'default' || name === 'on_error') return 'fallback-value'; + return 'option'; +} + +function dynamicParameter(name) { + if (!name.endsWith('.placeholder')) return {name}; + const prefix = name.slice(0, -'.placeholder'.length); + return { + name: `${prefix}.*`, + name_pattern: `^${prefix.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}\\.[A-Za-z_][A-Za-z0-9_]*$`, + }; +} + +function runtimeSource(runtime, revision) { + const symbolParts = runtime.python_symbol.split('.'); + const modulePath = `${symbolParts.slice(0, -1).join('/')}.py`; + return `https://github.com/wrangleworks/WranglesPY/blob/${revision}/${modulePath}`; +} + +function sourceGuidance(source, title) { + if (!source) return ''; + const parameterStart = source.search(/^### Parameters\s*$/m); + const useful = (parameterStart >= 0 ? source.slice(0, parameterStart) : source) + .replace(/^##\s+[^\r\n]+\r?\n*/, '') + .replace(/^### Examples\s*$/gm, '## Migrated examples') + .replace(/\bQuanitity\b/g, 'Quantity') + .replace(/\bagaisnst\b/gi, 'against') + .replace(/\bwarniing\b/gi, 'warning') + .replace(/\t/g, ' ') + .replace(/[ \t]+$/gm, '') + .trim(); + if (!useful) return ''; + return `# ${title}\n\n${useful}`; +} + +async function readQuasiRegistry() { + const records = new Map(); + const allMarkdown = await listFiles(quasiRegistryRoot, '.md'); + for (const sourceFile of allMarkdown.filter( + (filename) => path.basename(path.dirname(filename)) === '_sources')) { + const source = await fs.readFile(sourceFile, 'utf8'); + const metadata = fieldTable(markdownTableAfter(source, 'Metadata')); + const access = fieldTable(markdownTableAfter(source, 'Access')); + const wrangleKey = stripCode(metadata['Wrangle Key']); + const parameterRows = markdownTableAfter(source, '### Parameters'); + records.set(wrangleKey, { + source, + sourceFile, + sourceRelative: posixPath(path.relative(repositoryRoot, sourceFile)), + id: /^[0-9a-f-]{36}$/i.test(metadata.ID || '') ? metadata.ID : null, + title: source.match(/^##\s+(.+)$/m)?.[1]?.trim() || '', + status: String(metadata.Status || '').toLowerCase(), + tags: String(metadata.Tags || '').split(',').map(normalizeTag).filter(Boolean), + parameters: new Map(parameterRows.map((row) => [stripCode(row.Parameter), { + required: yesNo(row.Required), + description: compactText(row.Description), + }])), + access: { + ai_powered: yesNo(access['AI-backed']), + requires_account: yesNo(access['Requires WrangleWorks account']), + requires_subscription: yesNo(access['Requires subscription']), + requires_external_api_key: yesNo(access['Requires external API key']), + }, + }); + } + return records; +} + +function buildParameters(runtime, quasi) { + const embeddedProperties = schemaProperties(runtime.docstring_schema); + const embeddedRequired = schemaRequired(runtime.docstring_schema); + const parameters = []; + const names = new Set(); + + for (const runtimeParameter of runtime.parameters) { + if (COMMON_CONTROLS.has(runtimeParameter.name)) continue; + const embedded = embeddedProperties[runtimeParameter.name]; + const quasiParameter = quasi?.parameters.get(runtimeParameter.name); + const parameter = { + name: runtimeParameter.name, + description: parameterDescription(runtimeParameter.name, embedded, quasiParameter), + required: runtimeParameter.required, + role: parameterRole(runtimeParameter.name), + }; + if (hasOwn(runtimeParameter, 'default')) parameter.runtime_default = runtimeParameter.default; + parameter.schema = withCodeTypes(embedded, runtimeParameter); + parameters.push(parameter); + names.add(runtimeParameter.name); + } + + if (runtime.variadic.keyword) { + for (const [name, embedded] of Object.entries(embeddedProperties)) { + if (names.has(name) || COMMON_CONTROLS.has(name)) continue; + const parameter = { + ...dynamicParameter(name), + description: parameterDescription(name, embedded, quasi?.parameters.get(name)), + required: embeddedRequired.has(name), + role: parameterRole(name), + schema: withCodeTypes(embedded, null), + }; + parameters.push(parameter); + names.add(name); + } + } + return parameters; +} + +function defaultAccess(runtimeKey) { + if (runtimeKey === 'standardize.custom') { + return { + ai_powered: false, + requires_account: true, + requires_subscription: true, + requires_external_api_key: false, + }; + } + return { + ai_powered: false, + requires_account: false, + requires_subscription: false, + requires_external_api_key: false, + }; +} + +function resolvedAccess(runtime, quasi) { + const access = quasi && Object.values(quasi.access).every((value) => typeof value === 'boolean') + ? {...quasi.access} + : defaultAccess(runtime.runtime_key); + const description = schemaDescription(runtime.docstring_schema); + if (/requires? (?:a )?wrangleworks account/i.test(description)) { + access.requires_account = true; + } + if (/requires? (?:a )?subscription/i.test(description)) { + access.requires_subscription = true; + } + return access; +} + +function buildMetadata(runtime, manifest, quasi) { + const keyParts = runtime.runtime_key.split('.'); + const wrangleName = keyParts.at(-1); + const namespace = keyParts.length > 1 ? keyParts.slice(0, -1).join('.') : null; + const title = quasi?.title || humanize(runtime.runtime_key.replaceAll('.', ' ')); + const description = DESCRIPTION_OVERRIDES[runtime.runtime_key] || + schemaDescription(runtime.docstring_schema) || + sentence(runtime.plain_docstring) || + sentence(`${title} using the current WranglesPY implementation`); + const tags = [...new Set([ + ...(quasi?.tags || []), + ...(namespace ? namespace.split('.') : []), + normalizeTag(wrangleName), + ].filter(Boolean))]; + return { + schema_version: '0.1', + type: 'wrangle', + id: quasi?.id || null, + wrangle_name: wrangleName, + namespace, + title, + description, + wrangle_key: runtime.runtime_key, + aliases: [], + slug: namespace + ? `${namespace.split('.').map(kebab).join('/')}/${kebab(wrangleName)}` + : kebab(wrangleName), + status: runtime.runtime_key === 'maths' ? 'deprecated' : ( + ['draft', 'active', 'deprecated', 'removed'].includes(quasi?.status) + ? quasi.status + : 'active' + ), + visibility: 'public', + tags, + runtime: { + package: 'wrangles', + symbol: runtime.python_symbol, + contract_status: 'verified', + }, + access: resolvedAccess(runtime, quasi), + capabilities: runtime.capabilities, + parameters: buildParameters(runtime, quasi), + examples: [], + sources: [ + { + id: 'runtime', + resource: runtimeSource(runtime, manifest.source.revision), + title: `WranglesPY ${runtime.runtime_key} implementation`, + }, + ...(quasi ? [{ + id: 'quasi-registry', + resource: `https://github.com/wrangleworks/Wrangles-Docs/blob/main/${quasi.sourceRelative}`, + title: `Existing ${runtime.runtime_key} Markdown`, + }] : []), + ], + }; +} + +function entryPath(runtimeKey) { + const parts = runtimeKey.split('.'); + if (parts.length === 1) return path.join(entriesRoot, '_root', `${kebab(parts[0])}.md`); + return path.join(entriesRoot, ...parts.slice(0, -1), `${kebab(parts.at(-1))}.md`); +} + +function entryDocument(metadata, quasi, runtime) { + const frontmatter = yaml.dump(metadata, { + noRefs: true, + lineWidth: 100, + noCompatMode: true, + sortKeys: false, + }).trimEnd(); + const guidance = sourceGuidance(quasi?.source, metadata.title) || `# ${metadata.title} + +## Behavior + +${metadata.description} + +This first-pass guidance is derived from the callable signature${ + runtime.docstring_schema_status === 'available' + ? ' and its embedded Python schema docstring' + : '' +}.`; + return `---\n${frontmatter}\n---\n\n${guidance}\n`; +} + +async function main() { + const refreshGenerated = process.argv.includes('--refresh-generated'); + const manifest = JSON.parse(await fs.readFile(runtimeManifestPath, 'utf8')); + const quasiRegistry = await readQuasiRegistry(); + const existing = new Set((await listFiles(entriesRoot, '.md')).map((filename) => path.resolve(filename))); + let created = 0; + let preserved = 0; + let missingIds = 0; + + for (const runtime of manifest.wrangles) { + const output = entryPath(runtime.runtime_key); + if (existing.has(path.resolve(output)) && ( + !refreshGenerated || CURATED_KEYS.has(runtime.runtime_key) + )) { + preserved += 1; + continue; + } + const quasi = quasiRegistry.get(runtime.runtime_key); + const metadata = buildMetadata(runtime, manifest, quasi); + if (metadata.id === null) missingIds += 1; + await fs.mkdir(path.dirname(output), {recursive: true}); + await fs.writeFile(output, entryDocument(metadata, quasi, runtime), 'utf8'); + created += 1; + } + + console.log( + `Created ${created} first-pass Registry entries; preserved ${preserved} existing entries; ` + + `${missingIds} newly created entries await a database UUID.`, + ); +} + +main().catch((error) => { + console.error(error.stack || error.message); + process.exitCode = 1; +}); diff --git a/wrangles-docs/scripts/compile-registry.cjs b/wrangles-docs/scripts/compile-registry.cjs new file mode 100644 index 0000000..f784c3e --- /dev/null +++ b/wrangles-docs/scripts/compile-registry.cjs @@ -0,0 +1,1723 @@ +#!/usr/bin/env node + +const fs = require('node:fs/promises'); +const path = require('node:path'); +const crypto = require('node:crypto'); +const yaml = require('js-yaml'); + +const REGISTRY_VERSION = '0.1.0-pilot'; +const ENTRY_SCHEMA_VERSION = '0.1'; +const PUBLIC_ORIGIN = 'https://docs.wrangles.com'; + +const siteRoot = path.resolve(__dirname, '..'); +const repositoryRoot = path.resolve(siteRoot, '..'); +const registryRoot = path.join(repositoryRoot, 'registry'); +const entriesRoot = path.join(registryRoot, 'wrangles'); +const quasiRegistryRoot = path.join(siteRoot, 'wrangle-docs'); +const entrySchemaPath = path.join(registryRoot, 'schema', 'wrangle-entry.schema.json'); +const runtimeManifestSchemaPath = path.join( + registryRoot, + 'schema', + 'wrangles-runtime-manifest.schema.json', +); +const commonControlsPath = path.join(registryRoot, 'common', 'wrangle-controls.yaml'); +const runtimeManifestPath = path.join(registryRoot, 'runtime', 'wranglespy.json'); +const reportsOutputRoot = path.join(registryRoot, 'reports'); + +const docsOutputRoot = path.join(siteRoot, 'registry-docs'); +const rawOutputRoot = path.join(siteRoot, 'static', 'registry'); +const schemaOutputRoot = path.join(siteRoot, 'static', 'schemas', 'recipes', 'pilot'); + +const generatedFiles = new Map(); +const errors = []; + +function posixPath(value) { + return value.split(path.sep).join('/'); +} + +function fail(source, message) { + errors.push(`${posixPath(path.relative(repositoryRoot, source))}: ${message}`); +} + +function isObject(value) { + return value !== null && typeof value === 'object' && !Array.isArray(value); +} + +function hasOwn(value, key) { + return Object.prototype.hasOwnProperty.call(value, key); +} + +function valuesEqual(left, right) { + return JSON.stringify(left) === JSON.stringify(right); +} + +function sha256(value) { + return crypto.createHash('sha256').update(value).digest('hex'); +} + +function canonicalizeSchema(value) { + if (Array.isArray(value)) return value.map(canonicalizeSchema); + if (!isObject(value)) return value; + return Object.fromEntries( + Object.entries(value) + .filter(([key]) => !['description', 'title', '$comment'].includes(key)) + .sort(([left], [right]) => left.localeCompare(right)) + .map(([key, item]) => [key, canonicalizeSchema(item)]), + ); +} + +function parseFrontmatter(source, filename) { + const match = source.match(/^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/); + if (!match) { + fail(filename, 'missing YAML frontmatter'); + return null; + } + + try { + const metadata = yaml.load(match[1]); + if (!isObject(metadata)) { + fail(filename, 'frontmatter must be an object'); + return null; + } + return { + metadata, + body: source.slice(match[0].length).trim(), + }; + } catch (error) { + fail(filename, `invalid YAML frontmatter: ${error.message}`); + return null; + } +} + +async function listFiles(root, suffix = '') { + const results = []; + let directoryEntries; + try { + directoryEntries = await fs.readdir(root, {withFileTypes: true}); + } catch (error) { + if (error.code === 'ENOENT') return results; + throw error; + } + + for (const directoryEntry of directoryEntries) { + const fullPath = path.join(root, directoryEntry.name); + if (directoryEntry.isDirectory()) { + results.push(...await listFiles(fullPath, suffix)); + } else if (!suffix || directoryEntry.name.endsWith(suffix)) { + results.push(fullPath); + } + } + return results.sort(); +} + +function validateRuntimeManifest(manifest) { + if (!isObject(manifest)) { + fail(runtimeManifestPath, 'runtime manifest must be an object'); + return; + } + if (manifest.format !== 'wrangles-runtime-manifest') { + fail(runtimeManifestPath, 'format must be wrangles-runtime-manifest'); + } + if (manifest.format_version !== '0.1') { + fail(runtimeManifestPath, 'format_version must be 0.1'); + } + if (!isObject(manifest.source)) { + fail(runtimeManifestPath, 'source must be an object'); + } else { + if (manifest.source.repository !== 'https://github.com/wrangleworks/WranglesPY') { + fail(runtimeManifestPath, 'source.repository must identify WranglesPY'); + } + if (!/^[0-9a-f]{40}$/i.test(manifest.source.revision || '')) { + fail(runtimeManifestPath, 'source.revision must be a pinned 40-character Git commit'); + } + } + if (!Array.isArray(manifest.wrangles)) { + fail(runtimeManifestPath, 'wrangles must be an array'); + return; + } + if (manifest.entry_count !== manifest.wrangles.length) { + fail(runtimeManifestPath, 'entry_count does not match wrangles.length'); + } + + const keys = new Set(); + for (const [index, wrangle] of manifest.wrangles.entries()) { + const label = `wrangles[${index}]`; + if (!isObject(wrangle)) { + fail(runtimeManifestPath, `${label} must be an object`); + continue; + } + if (!/^[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)*$/.test(wrangle.runtime_key || '')) { + fail(runtimeManifestPath, `${label}.runtime_key is invalid`); + } else if (keys.has(wrangle.runtime_key)) { + fail(runtimeManifestPath, `duplicate runtime key ${wrangle.runtime_key}`); + } else { + keys.add(wrangle.runtime_key); + } + if (typeof wrangle.python_symbol !== 'string' || !wrangle.python_symbol) { + fail(runtimeManifestPath, `${label}.python_symbol must be a non-empty string`); + } + if (!Array.isArray(wrangle.parameters)) { + fail(runtimeManifestPath, `${label}.parameters must be an array`); + } + if (!isObject(wrangle.capabilities)) { + fail(runtimeManifestPath, `${label}.capabilities must be an object`); + } + if (!['available', 'missing'].includes(wrangle.docstring_schema_status)) { + fail(runtimeManifestPath, `${label}.docstring_schema_status is invalid`); + } + } +} + +function splitMarkdownRow(line) { + const trimmed = line.trim(); + if (!trimmed.startsWith('|') || !trimmed.endsWith('|')) return []; + + const cells = []; + let current = ''; + for (let index = 1; index < trimmed.length - 1; index += 1) { + const character = trimmed[index]; + if (character === '\\' && trimmed[index + 1] === '|') { + current += '|'; + index += 1; + } else if (character === '|') { + cells.push(current.trim()); + current = ''; + } else { + current += character; + } + } + cells.push(current.trim()); + return cells; +} + +function markdownTableAfter(source, marker) { + const lines = source.split(/\r?\n/); + const markerIndex = lines.findIndex((line) => line.trim() === marker); + if (markerIndex < 0) return []; + + let headerIndex = markerIndex + 1; + while (headerIndex < lines.length && !lines[headerIndex].trim()) headerIndex += 1; + if (!lines[headerIndex]?.trim().startsWith('|')) return []; + + const headers = splitMarkdownRow(lines[headerIndex]); + const rows = []; + for (let index = headerIndex + 2; index < lines.length; index += 1) { + if (!lines[index].trim().startsWith('|')) break; + const cells = splitMarkdownRow(lines[index]); + if (cells.length !== headers.length) continue; + rows.push(Object.fromEntries(headers.map((header, cellIndex) => [header, cells[cellIndex]]))); + } + return rows; +} + +function fieldTable(rows) { + return Object.fromEntries(rows.map((row) => [row.Field, row.Value])); +} + +function stripCode(value) { + const text = String(value || '').trim(); + return text.startsWith('`') && text.endsWith('`') ? text.slice(1, -1) : text; +} + +function yesNo(value) { + if (value === 'Yes') return true; + if (value === 'No') return false; + return null; +} + +function parseQuasiRegistryEntry(source, sourceFile) { + const metadata = fieldTable(markdownTableAfter(source, 'Metadata')); + const access = fieldTable(markdownTableAfter(source, 'Access')); + const parameterRows = markdownTableAfter(source, '### Parameters'); + const wrangleKey = stripCode(metadata['Wrangle Key']); + + if (!wrangleKey) fail(sourceFile, 'quasi-registry record has no Wrangle Key'); + if (!parameterRows.length) fail(sourceFile, 'quasi-registry record has no parameter table'); + + const parameters = parameterRows.map((row) => ({ + name: stripCode(row.Parameter), + required: yesNo(row.Required), + label: row.Label || '', + ui_type: row['UI Type'] || '', + description: row.Description || '', + allowed_values: row['Allowed Values'] || '', + display_default: row.Default || '', + })); + const parameterNames = new Set(); + for (const parameter of parameters) { + if (!parameter.name) { + fail(sourceFile, 'quasi-registry parameter has no name'); + } else if (parameterNames.has(parameter.name)) { + fail(sourceFile, `duplicate quasi-registry parameter ${parameter.name}`); + } else { + parameterNames.add(parameter.name); + } + if (parameter.required === null) { + fail(sourceFile, `quasi-registry parameter ${parameter.name} has invalid Required value`); + } + } + + const id = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test( + metadata.ID || '', + ) ? metadata.ID : null; + + return { + source_file: posixPath(path.relative(repositoryRoot, sourceFile)), + source_sha256: sha256(source), + title: source.match(/^##\s+(.+)$/m)?.[1]?.trim() || wrangleKey, + wrangle_key: wrangleKey, + id, + type: metadata.Type || '', + subtype: metadata.Subtype || '', + variant: metadata.Variant || '', + status: metadata.Status || '', + tags: String(metadata.Tags || '').split(',').map((tag) => tag.trim()).filter(Boolean), + parameters, + access: { + ai_powered: yesNo(access['AI-backed']), + requires_account: yesNo(access['Requires WrangleWorks account']), + requires_subscription: yesNo(access['Requires subscription']), + requires_external_api_key: yesNo(access['Requires external API key']), + }, + }; +} + +async function readQuasiRegistry() { + const allMarkdown = await listFiles(quasiRegistryRoot, '.md'); + const sourceFiles = allMarkdown.filter( + (sourceFile) => path.basename(path.dirname(sourceFile)) === '_sources', + ); + const sourceFileSet = new Set(sourceFiles.map((sourceFile) => path.resolve(sourceFile))); + const entries = []; + for (const sourceFile of sourceFiles) { + const source = await fs.readFile(sourceFile, 'utf8'); + entries.push(parseQuasiRegistryEntry(source, sourceFile)); + } + + const keys = new Set(); + for (const entry of entries) { + if (keys.has(entry.wrangle_key)) { + fail(path.join(repositoryRoot, entry.source_file), `duplicate quasi-registry key ${entry.wrangle_key}`); + } + keys.add(entry.wrangle_key); + } + + const supportingMarkdown = []; + for (const sourceFile of allMarkdown.filter( + (filename) => !sourceFileSet.has(path.resolve(filename)))) { + const source = await fs.readFile(sourceFile, 'utf8'); + supportingMarkdown.push({ + source_file: posixPath(path.relative(repositoryRoot, sourceFile)), + source_sha256: sha256(source), + }); + } + + return { + entries: entries.sort((left, right) => left.wrangle_key.localeCompare(right.wrangle_key)), + supportingMarkdown: supportingMarkdown.sort((left, right) => + left.source_file.localeCompare(right.source_file)), + }; +} + +function validateSchemaFragment(fragment, source, label) { + if (!isObject(fragment)) { + fail(source, `${label}.schema must be an object`); + return; + } + + const validTypes = new Set([ + 'array', + 'boolean', + 'integer', + 'null', + 'number', + 'object', + 'string', + ]); + const types = Array.isArray(fragment.type) ? fragment.type : [fragment.type]; + const hasComposition = ['anyOf', 'oneOf', 'allOf'].some((key) => Array.isArray(fragment[key])); + if (!fragment.type && !hasComposition && typeof fragment.$ref !== 'string') { + fail(source, `${label}.schema must declare type, composition, or $ref`); + } else if (fragment.type && types.some((type) => !validTypes.has(type))) { + fail(source, `${label}.schema.type contains an unsupported JSON Schema type`); + } + if (fragment.enum && !Array.isArray(fragment.enum)) { + fail(source, `${label}.schema.enum must be an array`); + } + if (fragment.items) { + validateSchemaFragment(fragment.items, source, `${label}.items`); + } + for (const keyword of ['anyOf', 'oneOf', 'allOf']) { + if (!hasOwn(fragment, keyword)) continue; + if (!Array.isArray(fragment[keyword]) || fragment[keyword].length === 0) { + fail(source, `${label}.schema.${keyword} must be a non-empty array`); + continue; + } + fragment[keyword].forEach((option, index) => + validateSchemaFragment(option, source, `${label}.${keyword}[${index}]`)); + } +} + +function validateTopLevel(metadata, source, entrySchema) { + const allowed = new Set(Object.keys(entrySchema.properties)); + for (const required of entrySchema.required) { + if (!hasOwn(metadata, required)) fail(source, `missing required field ${required}`); + } + for (const key of Object.keys(metadata)) { + if (!allowed.has(key)) fail(source, `unknown top-level field ${key}`); + } + + if (metadata.schema_version !== ENTRY_SCHEMA_VERSION) { + fail(source, `schema_version must be ${ENTRY_SCHEMA_VERSION}`); + } + if (metadata.type !== 'wrangle') fail(source, 'type must be wrangle'); + for (const key of [ + 'wrangle_name', + 'title', + 'description', + 'wrangle_key', + 'slug', + ]) { + if (typeof metadata[key] !== 'string' || !metadata[key].trim()) { + fail(source, `${key} must be a non-empty string`); + } + } + if (metadata.id !== null && !/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(metadata.id || '')) { + fail(source, 'id must be a UUID or null'); + } + if (!/^[a-z][a-z0-9_]*$/.test(metadata.wrangle_name || '')) { + fail(source, 'wrangle_name is invalid'); + } + if (metadata.namespace !== null && !/^[a-z][a-z0-9_]*$/.test(metadata.namespace || '')) { + fail(source, 'namespace must be a valid recipe-key segment or null'); + } + if (!/^[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)*$/.test(metadata.wrangle_key || '')) { + fail(source, 'wrangle_key is not a valid recipe key'); + } + const composedKey = metadata.namespace + ? `${metadata.namespace}.${metadata.wrangle_name}` + : metadata.wrangle_name; + if (metadata.wrangle_key !== composedKey) { + fail(source, `wrangle_key must equal namespace + wrangle_name (${composedKey})`); + } + if (!/^[a-z0-9]+(?:[a-z0-9_-]*[a-z0-9])?(\/[a-z0-9]+(?:[a-z0-9_-]*[a-z0-9])?)*$/.test(metadata.slug || '')) { + fail(source, 'slug is not a valid relative documentation path'); + } + if (!Array.isArray(metadata.aliases)) { + fail(source, 'aliases must be an array'); + } else { + const aliases = new Set(); + for (const alias of metadata.aliases) { + if (typeof alias !== 'string' || !/^[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)*$/.test(alias)) { + fail(source, `alias ${JSON.stringify(alias)} is not a valid recipe key`); + } else if (alias === metadata.wrangle_key) { + fail(source, `aliases must not contain the canonical wrangle_key ${alias}`); + } else if (aliases.has(alias)) { + fail(source, `duplicate alias ${alias}`); + } else { + aliases.add(alias); + } + } + } + if (!['draft', 'active', 'deprecated', 'removed'].includes(metadata.status)) { + fail(source, 'status is invalid'); + } + if (!['public', 'internal'].includes(metadata.visibility)) { + fail(source, 'visibility is invalid'); + } + if (!Array.isArray(metadata.tags) || metadata.tags.length === 0) { + fail(source, 'tags must be a non-empty array'); + } else if (new Set(metadata.tags).size !== metadata.tags.length) { + fail(source, 'tags must be unique'); + } + + if (!isObject(metadata.runtime)) { + fail(source, 'runtime must be an object'); + } else { + for (const key of ['package', 'symbol', 'contract_status']) { + if (!hasOwn(metadata.runtime, key)) fail(source, `runtime.${key} is required`); + } + if (!['awaiting-manifest', 'verified'].includes(metadata.runtime.contract_status)) { + fail(source, 'runtime.contract_status is invalid'); + } + } + + const accessKeys = [ + 'ai_powered', + 'requires_account', + 'requires_subscription', + 'requires_external_api_key', + ]; + if (!isObject(metadata.access)) { + fail(source, 'access must be an object'); + } else { + for (const key of accessKeys) { + if (typeof metadata.access[key] !== 'boolean') { + fail(source, `access.${key} must be a boolean`); + } + } + } + if (!isObject(metadata.capabilities)) fail(source, 'capabilities must be an object'); + if (!Array.isArray(metadata.parameters)) { + fail(source, 'parameters must be an array'); + } + if (!Array.isArray(metadata.examples)) fail(source, 'examples must be an array'); + if (!Array.isArray(metadata.sources) || metadata.sources.length === 0) { + fail(source, 'sources must be a non-empty array'); + } +} + +function validateParameters(metadata, source) { + if (!Array.isArray(metadata.parameters)) return; + const names = new Set(); + for (const [index, parameter] of metadata.parameters.entries()) { + const label = `parameters[${index}]`; + if (!isObject(parameter)) { + fail(source, `${label} must be an object`); + continue; + } + const allowed = new Set([ + 'name', + 'name_pattern', + 'description', + 'required', + 'role', + 'runtime_default', + 'schema', + ]); + for (const key of Object.keys(parameter)) { + if (!allowed.has(key)) fail(source, `${label} has unknown field ${key}`); + } + for (const key of ['name', 'description', 'required', 'role', 'schema']) { + if (!hasOwn(parameter, key)) fail(source, `${label}.${key} is required`); + } + if (typeof parameter.name_pattern === 'string') { + try { + new RegExp(parameter.name_pattern); + } catch (error) { + fail(source, `${label}.name_pattern is invalid: ${error.message}`); + } + if (typeof parameter.name !== 'string' || !parameter.name.trim()) { + fail(source, `${label}.name must label the dynamic parameter family`); + } + } else if (!/^[a-z][A-Za-z0-9_]*$/.test(parameter.name || '')) { + fail(source, `${label}.name is not a valid Python keyword parameter`); + } else if (names.has(parameter.name)) { + fail(source, `duplicate parameter ${parameter.name}`); + } else { + names.add(parameter.name); + } + if (typeof parameter.description !== 'string' || !parameter.description.trim()) { + fail(source, `${label}.description must be a non-empty string`); + } + if (typeof parameter.required !== 'boolean') { + fail(source, `${label}.required must be a boolean`); + } + if (typeof parameter.role !== 'string' || !parameter.role.trim()) { + fail(source, `${label}.role must be a non-empty string`); + } + validateSchemaFragment(parameter.schema, source, label); + } +} + +async function validateExamples(entry) { + const ids = new Set(); + for (const [index, example] of entry.metadata.examples.entries()) { + const label = `examples[${index}]`; + if (!isObject(example)) { + fail(entry.sourceFile, `${label} must be an object`); + continue; + } + for (const key of [ + 'id', + 'title', + 'recipe', + 'input_fixture', + 'output_fixture', + 'verification', + ]) { + if (!hasOwn(example, key)) fail(entry.sourceFile, `${label}.${key} is required`); + } + if (!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(example.id || '')) { + fail(entry.sourceFile, `${label}.id is invalid`); + } else if (ids.has(example.id)) { + fail(entry.sourceFile, `duplicate example id ${example.id}`); + } else { + ids.add(example.id); + } + if (!['static', 'offline', 'live', 'manual'].includes(example.verification)) { + fail(entry.sourceFile, `${label}.verification is invalid`); + } + + let recipe; + try { + recipe = yaml.load(example.recipe); + } catch (error) { + fail(entry.sourceFile, `${label}.recipe is invalid YAML: ${error.message}`); + } + if (!isObject(recipe) || !Array.isArray(recipe.wrangles)) { + fail(entry.sourceFile, `${label}.recipe must contain a wrangles array`); + } else { + const usesEntry = recipe.wrangles.some( + (step) => isObject(step) && hasOwn(step, entry.metadata.wrangle_key), + ); + if (!usesEntry) { + fail(entry.sourceFile, `${label}.recipe does not use ${entry.metadata.wrangle_key}`); + } + } + + for (const fixtureField of ['input_fixture', 'output_fixture']) { + if (typeof example[fixtureField] !== 'string') continue; + const fixturePath = path.resolve(path.dirname(entry.sourceFile), example[fixtureField]); + const registryPrefix = `${registryRoot}${path.sep}`; + if (!fixturePath.startsWith(registryPrefix)) { + fail(entry.sourceFile, `${label}.${fixtureField} resolves outside registry/`); + continue; + } + try { + const fixture = JSON.parse(await fs.readFile(fixturePath, 'utf8')); + if (!Array.isArray(fixture) || fixture.some((row) => !isObject(row))) { + fail(entry.sourceFile, `${label}.${fixtureField} must contain a JSON array of objects`); + } + example[`_${fixtureField}`] = fixture; + } catch (error) { + fail(entry.sourceFile, `${label}.${fixtureField} cannot be read: ${error.message}`); + } + } + } +} + +function escapeMdxText(value) { + return String(value ?? '') + .split(/(`[^`\r\n]*`)/g) + .map((part) => part.startsWith('`') ? part : part + .replace(/&/g, '&') + .replace(/\{/g, '{') + .replace(/\}/g, '}') + .replace(//g, '>')) + .join(''); +} + +function escapeCell(value) { + return escapeMdxText(value) + .replace(/\|/g, '\\|') + .replace(/\r?\n/g, '
'); +} + +function schemaSummary(schema) { + for (const keyword of ['anyOf', 'oneOf']) { + if (Array.isArray(schema[keyword])) { + return schema[keyword].map(schemaSummary).filter(Boolean).join(' or '); + } + } + if (typeof schema.$ref === 'string') return `reference: ${schema.$ref}`; + const types = Array.isArray(schema.type) ? schema.type : [schema.type]; + const typeLabel = types.filter(Boolean).join(', '); + if (Array.isArray(schema.enum)) { + return `${typeLabel}; one of: ${schema.enum.map(String).join(', ')}`; + } + return typeLabel; +} + +function jsonValue(value) { + return value === undefined ? '—' : `\`${JSON.stringify(value)}\``; +} + +function entryRoute(entry) { + return `/wrangles/${entry.metadata.slug}`; +} + +function entryOutputRelativePath(entry) { + const parts = entry.metadata.slug.split('/'); + return path.join(...parts.slice(0, -1), `${parts.at(-1)}.md`); +} + +function entryContractRelativePath(entry) { + const parts = entry.metadata.slug.split('/'); + return path.join('contracts', ...parts.slice(0, -1), `${parts.at(-1)}.json`); +} + +function combinedParameters(entry, controls) { + const parameters = [...entry.metadata.parameters]; + for (const [name, enabled] of Object.entries(entry.metadata.capabilities)) { + if (!enabled) continue; + if (!controls[name]) { + fail(entry.sourceFile, `capability ${name} has no common control definition`); + continue; + } + if (parameters.some((parameter) => parameter.name === name)) { + fail(entry.sourceFile, `capability ${name} duplicates an entry parameter`); + continue; + } + parameters.push({name, ...controls[name], role: 'common-control'}); + } + return parameters; +} + +function stripLeadingTitle(body) { + return body.replace(/^#\s+[^\r\n]+\r?\n*/, '').trim(); +} + +function renderEntryPage(entry, controls) { + const metadata = entry.metadata; + const parameters = combinedParameters(entry, controls); + const parameterRows = parameters.map((parameter) => [ + `\`${parameter.name}\``, + parameter.required ? 'Yes' : 'No', + escapeCell(schemaSummary(parameter.schema)), + escapeCell(parameter.description), + hasOwn(parameter, 'runtime_default') ? jsonValue(parameter.runtime_default) : '—', + ]); + + const examples = metadata.examples.map((example) => [ + `### ${example.title}`, + '', + `Verification: \`${example.verification}\``, + '', + '```yaml', + example.recipe.trim(), + '```', + '', + '#### Input', + '', + '```json', + JSON.stringify(example._input_fixture, null, 2), + '```', + '', + '#### Output', + '', + '```json', + JSON.stringify(example._output_fixture, null, 2), + '```', + ].join('\n')).join('\n\n'); + + const sourceRows = metadata.sources.map((source) => + `- [${source.title || source.id}](${source.resource})`, + ).join('\n'); + + const accessRows = Object.entries(metadata.access).map(([key, value]) => + `| ${escapeCell(key.replaceAll('_', ' '))} | ${value ? 'Yes' : 'No'} |`, + ).join('\n'); + + const guidance = stripLeadingTitle(entry.body); + return `--- +title: "${metadata.title.replaceAll('"', '\\"')}" +description: "${metadata.description.replaceAll('"', '\\"')}" +sidebar_label: "${metadata.title.replaceAll('"', '\\"')}" +slug: "/${metadata.slug}" +--- + +# ${metadata.title} + +${escapeMdxText(metadata.description)} + +> Pilot Registry entry. Runtime contract status: \`${metadata.runtime.contract_status}\`. + +## Parameters + +| Parameter | Required | Accepted value | Description | Runtime default | +| --- | --- | --- | --- | --- | +${parameterRows.map((row) => `| ${row.join(' | ')} |`).join('\n')} + +## Verified examples + +${examples || '_No fixture-backed examples are currently available. See migrated examples under Guidance where present._'} + +## Access + +| Requirement | Value | +| --- | --- | +${accessRows} + +## Guidance + +${guidance || '_No additional guidance._'} + +## Provenance + +${sourceRows} + +## Registry metadata + +- Registry ID: ${metadata.id ? `\`${metadata.id}\`` : 'pending database assignment'} +- Namespace: ${metadata.namespace ? `\`${metadata.namespace}\`` : 'root-level runtime key'} +- Recipe key: \`${metadata.wrangle_key}\` +- Aliases: ${metadata.aliases.length ? metadata.aliases.map((alias) => `\`${alias}\``).join(', ') : 'none'} +- Runtime symbol: \`${metadata.runtime.symbol}\` +- Status: \`${metadata.status}\` +- Registry version: \`${REGISTRY_VERSION}\` +`; +} + +function renderDocsIndex(entries) { + const rows = entries.map((entry) => + `| [\`${entry.metadata.wrangle_key}\`](${entryRoute(entry)}) | ${escapeCell(entry.metadata.description)} | \`${entry.metadata.runtime.contract_status}\` |`, + ).join('\n'); + return `--- +title: Wrangles Registry Pilot +description: Pilot of the versioned Wrangles recipe knowledge registry. +slug: / +--- + +# Wrangles Registry Pilot + +This preview contains the first Registry records compiled from the new +Markdown contract. These pages are not yet the production replacement for the +existing wrangle reference. + +| Wrangle | Description | Runtime contract | +| --- | --- | --- | +${rows} +`; +} + +function renderRawIndex(entries) { + const rows = entries.map((entry) => { + const rawRelative = posixPath(path.relative(registryRoot, entry.sourceFile)); + return `- [\`${entry.metadata.wrangle_key}\`](${rawRelative}): ${entry.metadata.description}`; + }).join('\n'); + return `--- +okf_version: "0.2" +type: collection +title: Wrangles Registry +description: Public pilot bundle for Wrangles recipe primitives. +status: pilot +registry_version: ${REGISTRY_VERSION} +--- + +# Wrangles Registry + +This is the public, agent-readable pilot bundle. Use \`manifest.json\` for +structured discovery. + +${rows} +`; +} + +function schemaAcceptsValue(schema, value) { + for (const keyword of ['anyOf', 'oneOf']) { + if (Array.isArray(schema[keyword])) { + return schema[keyword].some((option) => schemaAcceptsValue(option, value)); + } + } + if (value === null) { + const types = Array.isArray(schema.type) ? schema.type : [schema.type]; + return types.includes('null'); + } + if (Array.isArray(schema.enum)) return schema.enum.includes(value); + const types = Array.isArray(schema.type) ? schema.type : [schema.type]; + if (Array.isArray(value)) return types.includes('array'); + if (typeof value === 'number') { + return types.includes('number') || (Number.isInteger(value) && types.includes('integer')); + } + return types.includes(typeof value); +} + +function buildParameterSchema(parameter) { + const result = JSON.parse(JSON.stringify(parameter.schema)); + result.description = parameter.description; + if ( + hasOwn(parameter, 'runtime_default') && + schemaAcceptsValue(parameter.schema, parameter.runtime_default) + ) { + result.default = parameter.runtime_default; + } + return result; +} + +function buildRecipeSchema(entries, controls) { + const wrangleProperties = {}; + for (const entry of entries) { + const parameters = combinedParameters(entry, controls); + const properties = Object.fromEntries( + parameters + .filter((parameter) => !parameter.name_pattern) + .map((parameter) => [parameter.name, buildParameterSchema(parameter)]), + ); + const patternProperties = Object.fromEntries( + parameters + .filter((parameter) => parameter.name_pattern) + .map((parameter) => [parameter.name_pattern, buildParameterSchema(parameter)]), + ); + const required = parameters + .filter((parameter) => parameter.required && !parameter.name_pattern) + .map((parameter) => parameter.name); + const configuration = { + type: 'object', + description: entry.metadata.description, + additionalProperties: false, + properties, + }; + if (Object.keys(patternProperties).length) configuration.patternProperties = patternProperties; + if (required.length) configuration.required = required; + for (const recipeKey of [entry.metadata.wrangle_key, ...entry.metadata.aliases]) { + wrangleProperties[recipeKey] = configuration; + } + } + + return { + $schema: 'http://json-schema.org/draft-07/schema#', + $id: `${PUBLIC_ORIGIN}/schemas/recipes/pilot/schema.json`, + title: 'Wrangles Recipe Schema - Registry Pilot', + description: 'Pilot schema containing only the initial Registry entries.', + $comment: 'Not the production recipe schema. Generated from Registry version 0.1.0-pilot.', + type: 'object', + additionalProperties: false, + required: ['wrangles'], + properties: { + wrangles: { + type: 'array', + minItems: 1, + items: {$ref: '#/$defs/wrangles/items'}, + }, + }, + $defs: { + wrangles: { + items: { + type: 'object', + description: 'One Registry-backed wrangle step.', + minProperties: 1, + maxProperties: 1, + additionalProperties: false, + patternProperties: { + '^custom\\..*': {type: 'object'}, + '^pandas\\..*': {type: 'object'}, + }, + properties: wrangleProperties, + }, + }, + write: { + items: { + type: 'object', + description: 'One write connector step from the wider recipe contract.', + minProperties: 1, + maxProperties: 1, + }, + }, + }, + }; +} + +function buildEntryContract(entry, controls) { + const metadata = entry.metadata; + const examples = metadata.examples.map((example) => { + const inputPath = path.resolve(path.dirname(entry.sourceFile), example.input_fixture); + const outputPath = path.resolve(path.dirname(entry.sourceFile), example.output_fixture); + return { + id: example.id, + title: example.title, + recipe: example.recipe, + input_fixture: `/registry/${posixPath(path.relative(registryRoot, inputPath))}`, + output_fixture: `/registry/${posixPath(path.relative(registryRoot, outputPath))}`, + verification: example.verification, + }; + }); + + return { + format: 'wrangles-registry-entry', + registry_version: REGISTRY_VERSION, + schema_version: metadata.schema_version, + type: metadata.type, + id: metadata.id, + wrangle_name: metadata.wrangle_name, + namespace: metadata.namespace, + wrangle_key: metadata.wrangle_key, + aliases: metadata.aliases, + slug: metadata.slug, + title: metadata.title, + description: metadata.description, + status: metadata.status, + visibility: metadata.visibility, + tags: metadata.tags, + runtime: metadata.runtime, + access: metadata.access, + capabilities: metadata.capabilities, + parameters: combinedParameters(entry, controls), + examples, + guidance: stripLeadingTitle(entry.body), + sources: metadata.sources, + }; +} + +function docstringProperties(schema) { + if (!isObject(schema)) return {}; + if (isObject(schema.properties)) return schema.properties; + if (Array.isArray(schema.anyOf)) { + for (let index = schema.anyOf.length - 1; index >= 0; index -= 1) { + if (isObject(schema.anyOf[index]?.properties)) return schema.anyOf[index].properties; + } + } + return {}; +} + +function docstringRequired(schema) { + if (!isObject(schema)) return []; + if (Array.isArray(schema.required)) return schema.required; + if (Array.isArray(schema.anyOf)) { + for (let index = schema.anyOf.length - 1; index >= 0; index -= 1) { + if (Array.isArray(schema.anyOf[index]?.required)) return schema.anyOf[index].required; + } + } + return []; +} + +function parameterComparisonName(parameter) { + return parameter.name_pattern + ? parameter.name.replace(/\.\*$/, '.placeholder') + : parameter.name; +} + +function compareEmbeddedSchema(entry, runtime) { + if (runtime.docstring_schema_status === 'missing') { + return [{code: 'missing_docstring_schema'}]; + } + + const differences = []; + const registryParameters = new Map( + entry.metadata.parameters.map((parameter) => [parameterComparisonName(parameter), parameter]), + ); + const runtimeParameters = new Map( + runtime.parameters.map((parameter) => [parameter.name, parameter]), + ); + const properties = docstringProperties(runtime.docstring_schema); + const required = new Set(docstringRequired(runtime.docstring_schema)); + const allNames = [...new Set([ + ...registryParameters.keys(), + ...Object.keys(properties), + ])].sort(); + + for (const name of allNames) { + const registryParameter = registryParameters.get(name); + const docstringParameter = properties[name]; + if (!registryParameter) { + differences.push({code: 'docstring_only_parameter', parameter: name}); + continue; + } + if (!docstringParameter) { + differences.push({code: 'registry_only_parameter', parameter: name}); + continue; + } + + const runtimeParameter = runtimeParameters.get(name); + if (runtimeParameter && required.has(name) !== runtimeParameter.required) { + differences.push({ + code: 'docstring_required_mismatch', + parameter: name, + runtime_required: runtimeParameter.required, + docstring_required: required.has(name), + }); + } + if (!valuesEqual( + canonicalizeSchema(registryParameter.schema), + canonicalizeSchema(docstringParameter), + )) { + differences.push({ + code: 'schema_constraint_difference', + parameter: name, + registry_schema: canonicalizeSchema(registryParameter.schema), + docstring_schema: canonicalizeSchema(docstringParameter), + }); + } + } + + if (runtime.docstring_schema.additionalProperties !== false) { + differences.push({code: 'docstring_allows_additional_properties'}); + } + return differences; +} + +function effectiveRuntimeParameters(runtime) { + const parameters = new Map( + runtime.parameters.map((parameter) => [parameter.name, { + ...parameter, + source: 'signature', + }]), + ); + if (runtime.variadic.keyword && runtime.docstring_schema_status === 'available') { + const properties = docstringProperties(runtime.docstring_schema); + const required = new Set(docstringRequired(runtime.docstring_schema)); + for (const name of Object.keys(properties)) { + if (!parameters.has(name)) { + parameters.set(name, { + name, + required: required.has(name), + source: 'embedded-schema-for-kwargs', + }); + } + } + } + for (const control of ['if', 'where', 'where_params']) { + if (runtime.capabilities[control]) { + parameters.set(control, {name: control, required: false}); + } + } + return parameters; +} + +function effectiveEmbeddedParameters(runtime) { + if (runtime.docstring_schema_status === 'missing') return null; + const properties = docstringProperties(runtime.docstring_schema); + const required = new Set(docstringRequired(runtime.docstring_schema)); + const parameters = new Map( + Object.keys(properties).map((name) => [name, {name, required: required.has(name)}]), + ); + for (const control of ['if', 'where', 'where_params']) { + if (runtime.capabilities[control]) { + parameters.set(control, {name: control, required: false}); + } + } + return parameters; +} + +function effectiveNormalizedParameters(entry) { + const parameters = new Map( + entry.metadata.parameters.map((parameter) => [parameterComparisonName(parameter), { + name: parameterComparisonName(parameter), + required: parameter.required, + }]), + ); + for (const [name, enabled] of Object.entries(entry.metadata.capabilities)) { + if (enabled) parameters.set(name, {name, required: false}); + } + return parameters; +} + +function compareQuasiToRuntime(quasi, runtime) { + if (!runtime) return [{code: 'missing_runtime_wrangle'}]; + const differences = []; + const quasiParameters = new Map( + quasi.parameters.map((parameter) => [parameter.name, parameter]), + ); + const runtimeParameters = effectiveRuntimeParameters(runtime); + const names = [...new Set([ + ...quasiParameters.keys(), + ...runtimeParameters.keys(), + ])].sort(); + + for (const name of names) { + const quasiParameter = quasiParameters.get(name); + const runtimeParameter = runtimeParameters.get(name); + if (!quasiParameter) { + differences.push({code: 'runtime_only_parameter', parameter: name}); + } else if (!runtimeParameter) { + differences.push({code: 'quasi_registry_only_parameter', parameter: name}); + } else if (quasiParameter.required !== runtimeParameter.required) { + differences.push({ + code: 'required_mismatch', + parameter: name, + quasi_registry_required: quasiParameter.required, + runtime_required: runtimeParameter.required, + }); + } + } + return differences; +} + +function compareQuasiToEmbeddedSchema(quasi, runtime) { + if (!runtime) return []; + const embeddedParameters = effectiveEmbeddedParameters(runtime); + if (!embeddedParameters) return [{code: 'missing_docstring_schema'}]; + + const differences = []; + const quasiParameters = new Map( + quasi.parameters.map((parameter) => [parameter.name, parameter]), + ); + const names = [...new Set([ + ...quasiParameters.keys(), + ...embeddedParameters.keys(), + ])].sort(); + for (const name of names) { + const quasiParameter = quasiParameters.get(name); + const embeddedParameter = embeddedParameters.get(name); + if (!quasiParameter) { + differences.push({code: 'embedded_schema_only_parameter', parameter: name}); + } else if (!embeddedParameter) { + differences.push({code: 'quasi_registry_only_parameter', parameter: name}); + } else if (quasiParameter.required !== embeddedParameter.required) { + differences.push({ + code: 'embedded_required_mismatch', + parameter: name, + quasi_registry_required: quasiParameter.required, + embedded_schema_required: embeddedParameter.required, + }); + } + } + return differences; +} + +function compareQuasiToNormalized(quasi, normalized) { + if (!normalized) return []; + const differences = []; + if (quasi.id && quasi.id !== normalized.metadata.id) { + differences.push({ + code: 'id_mismatch', + quasi_registry: quasi.id, + normalized_registry: normalized.metadata.id, + }); + } + + const quasiParameters = new Map( + quasi.parameters.map((parameter) => [parameter.name, parameter]), + ); + const normalizedParameters = effectiveNormalizedParameters(normalized); + const names = [...new Set([ + ...quasiParameters.keys(), + ...normalizedParameters.keys(), + ])].sort(); + for (const name of names) { + const quasiParameter = quasiParameters.get(name); + const normalizedParameter = normalizedParameters.get(name); + if (!quasiParameter) { + differences.push({code: 'normalized_registry_only_parameter', parameter: name}); + } else if (!normalizedParameter) { + differences.push({code: 'quasi_registry_only_parameter', parameter: name}); + } else if (quasiParameter.required !== normalizedParameter.required) { + differences.push({ + code: 'required_mismatch', + parameter: name, + quasi_registry_required: quasiParameter.required, + normalized_registry_required: normalizedParameter.required, + }); + } + } + + for (const [name, normalizedValue] of Object.entries(normalized.metadata.access)) { + if (quasi.access[name] !== null && quasi.access[name] !== normalizedValue) { + differences.push({ + code: 'access_mismatch', + requirement: name, + quasi_registry: quasi.access[name], + normalized_registry: normalizedValue, + }); + } + } + return differences; +} + +function reconcileRegistry(entries, runtimeManifest, quasiRegistry) { + const runtimeByKey = new Map( + runtimeManifest.wrangles.map((wrangle) => [wrangle.runtime_key, wrangle]), + ); + const normalizedByDeclaredKey = new Map(); + for (const entry of entries) { + for (const key of [entry.metadata.wrangle_key, ...entry.metadata.aliases]) { + normalizedByDeclaredKey.set(key, entry); + } + } + const normalizedResults = []; + + for (const entry of [...entries].sort((left, right) => + left.metadata.wrangle_key.localeCompare(right.metadata.wrangle_key))) { + const declaredKeys = [entry.metadata.wrangle_key, ...entry.metadata.aliases]; + const matchedKeys = declaredKeys.filter((key) => runtimeByKey.has(key)); + const preferredKey = matchedKeys.includes(entry.metadata.wrangle_key) + ? entry.metadata.wrangle_key + : matchedKeys[0]; + const runtime = preferredKey ? runtimeByKey.get(preferredKey) : null; + const issues = []; + + if (!runtime) { + issues.push({code: 'registry_only'}); + fail(entry.sourceFile, 'no wrangle_key or alias exists in the runtime manifest'); + } else { + if (runtime.python_symbol !== entry.metadata.runtime.symbol) { + issues.push({ + code: 'python_symbol_mismatch', + registry: entry.metadata.runtime.symbol, + runtime: runtime.python_symbol, + }); + } + + const registryParameters = new Map( + entry.metadata.parameters.map((parameter) => [parameterComparisonName(parameter), parameter]), + ); + const runtimeParameters = effectiveRuntimeParameters(runtime); + for (const control of ['if', 'where', 'where_params']) runtimeParameters.delete(control); + for (const name of [...new Set([ + ...registryParameters.keys(), + ...runtimeParameters.keys(), + ])].sort()) { + const registryParameter = registryParameters.get(name); + const runtimeParameter = runtimeParameters.get(name); + if (!registryParameter) { + issues.push({code: 'runtime_only_parameter', parameter: name}); + continue; + } + if (!runtimeParameter) { + issues.push({code: 'registry_only_parameter', parameter: name}); + continue; + } + if (registryParameter.required !== runtimeParameter.required) { + issues.push({ + code: 'required_mismatch', + parameter: name, + registry: registryParameter.required, + runtime: runtimeParameter.required, + }); + } + const registryHasDefault = hasOwn(registryParameter, 'runtime_default'); + const runtimeHasDefault = hasOwn(runtimeParameter, 'default'); + if (registryHasDefault !== runtimeHasDefault || ( + registryHasDefault && !valuesEqual( + registryParameter.runtime_default, + runtimeParameter.default, + ) + )) { + issues.push({ + code: 'default_mismatch', + parameter: name, + registry: registryHasDefault ? registryParameter.runtime_default : '', + runtime: runtimeHasDefault ? runtimeParameter.default : '', + }); + } + } + + for (const control of ['if', 'where', 'where_params']) { + if (entry.metadata.capabilities[control] !== runtime.capabilities[control]) { + issues.push({ + code: 'capability_mismatch', + capability: control, + registry: entry.metadata.capabilities[control], + runtime: runtime.capabilities[control], + }); + } + } + + for (const issue of issues) { + fail(entry.sourceFile, `runtime reconciliation ${issue.code}: ${JSON.stringify(issue)}`); + } + if (issues.length === 0 && entry.metadata.runtime.contract_status !== 'verified') { + fail(entry.sourceFile, 'runtime.contract_status must be verified after reconciliation'); + } + } + + normalizedResults.push({ + wrangle_key: entry.metadata.wrangle_key, + matched_runtime_keys: matchedKeys, + status: runtime && issues.length === 0 ? 'verified' : 'conflict', + runtime_issues: issues, + embedded_schema_differences: runtime ? compareEmbeddedSchema(entry, runtime) : [], + }); + } + + const quasiByKey = new Map( + quasiRegistry.entries.map((entry) => [entry.wrangle_key, entry]), + ); + const quasiResults = quasiRegistry.entries.map((quasi) => { + const runtime = runtimeByKey.get(quasi.wrangle_key) || null; + const normalized = normalizedByDeclaredKey.get(quasi.wrangle_key) || null; + return { + wrangle_key: quasi.wrangle_key, + source_file: quasi.source_file, + source_sha256: quasi.source_sha256, + id: quasi.id, + runtime_status: runtime ? 'matched' : 'missing', + normalized_registry_status: normalized ? 'matched' : 'awaiting-normalization', + runtime_parameter_differences: compareQuasiToRuntime(quasi, runtime), + embedded_schema_differences: compareQuasiToEmbeddedSchema(quasi, runtime), + normalized_registry_differences: compareQuasiToNormalized(quasi, normalized), + migration_content: { + title: quasi.title, + type: quasi.type, + subtype: quasi.subtype, + variant: quasi.variant, + status: quasi.status, + tags: quasi.tags, + parameters: quasi.parameters, + access: quasi.access, + }, + }; + }); + const runtimeWithoutQuasi = runtimeManifest.wrangles + .filter((wrangle) => !quasiByKey.has(wrangle.runtime_key)) + .map((wrangle) => ({ + runtime_key: wrangle.runtime_key, + python_symbol: wrangle.python_symbol, + docstring_schema_status: wrangle.docstring_schema_status, + })); + const quasiWithoutRuntime = quasiResults.filter((entry) => entry.runtime_status === 'missing'); + const normalizedWithoutQuasi = entries + .filter((entry) => ![entry.metadata.wrangle_key, ...entry.metadata.aliases] + .some((key) => quasiByKey.has(key))) + .map((entry) => entry.metadata.wrangle_key) + .sort(); + const runtimeWithoutNormalized = runtimeManifest.wrangles + .filter((runtime) => !normalizedByDeclaredKey.has(runtime.runtime_key)) + .map((runtime) => runtime.runtime_key) + .sort(); + for (const runtimeKey of runtimeWithoutNormalized) { + fail( + runtimeManifestPath, + `runtime key ${runtimeKey} has no normalized Registry entry; run npm run bootstrap:registry`, + ); + } + + return { + format: 'wrangles-registry-reconciliation', + format_version: '0.2', + registry_version: REGISTRY_VERSION, + runtime_source: runtimeManifest.source, + summary: { + runtime_entries: runtimeManifest.wrangles.length, + embedded_schema_entries: runtimeManifest.wrangles.filter( + (wrangle) => wrangle.docstring_schema_status === 'available', + ).length, + quasi_registry_entries: quasiResults.length, + normalized_registry_entries: entries.length, + normalized_verified_entries: normalizedResults.filter( + (result) => result.status === 'verified', + ).length, + normalized_conflicting_entries: normalizedResults.filter( + (result) => result.status === 'conflict', + ).length, + normalized_entries_with_embedded_schema_differences: normalizedResults.filter( + (result) => result.embedded_schema_differences.length > 0, + ).length, + runtime_entries_without_embedded_schema: runtimeManifest.wrangles.filter( + (wrangle) => wrangle.docstring_schema_status === 'missing', + ).length, + normalized_and_quasi_entries: quasiResults.filter( + (entry) => entry.normalized_registry_status === 'matched', + ).length, + quasi_entries_awaiting_normalization: quasiResults.filter( + (entry) => entry.normalized_registry_status === 'awaiting-normalization', + ).length, + runtime_entries_without_normalized_registry: runtimeWithoutNormalized.length, + runtime_entries_without_quasi_registry: runtimeWithoutQuasi.length, + quasi_entries_without_runtime: quasiWithoutRuntime.length, + quasi_entries_without_id: quasiResults.filter((entry) => !entry.id).length, + supporting_markdown_files: quasiRegistry.supportingMarkdown.length, + }, + normalized_registry_entries: normalizedResults, + quasi_registry_entries: quasiResults, + runtime_without_quasi_registry: runtimeWithoutQuasi, + quasi_registry_without_runtime: quasiWithoutRuntime.map((entry) => ({ + wrangle_key: entry.wrangle_key, + source_file: entry.source_file, + })), + normalized_registry_without_quasi: normalizedWithoutQuasi, + runtime_without_normalized_registry: runtimeWithoutNormalized, + supporting_markdown: quasiRegistry.supportingMarkdown, + }; +} + +function renderReconciliationReport(report) { + const registryRows = report.normalized_registry_entries.map((entry) => { + const runtimeKeys = entry.matched_runtime_keys.length + ? entry.matched_runtime_keys.map((key) => `\`${key}\``).join(', ') + : 'none'; + return `| \`${entry.wrangle_key}\` | ${runtimeKeys} | ${entry.status} | ${entry.runtime_issues.length} | ${entry.embedded_schema_differences.length} |`; + }).join('\n'); + const runtimeWithoutQuasiRows = report.runtime_without_quasi_registry.map((entry) => + `| \`${entry.runtime_key}\` | \`${entry.python_symbol}\` | ${entry.docstring_schema_status} |`, + ).join('\n'); + const embeddedRows = report.normalized_registry_entries.flatMap((entry) => + entry.embedded_schema_differences.map((difference) => { + let detail = 'See the JSON report for both schema fragments.'; + if (difference.code === 'docstring_required_mismatch') { + detail = `runtime required=${difference.runtime_required}; docstring required=${difference.docstring_required}`; + } else if (difference.code === 'docstring_allows_additional_properties') { + detail = 'The curated Registry contract rejects undocumented parameters.'; + } else if (difference.code === 'missing_docstring_schema') { + detail = 'The callable is present but has no embedded Python schema docstring.'; + } + const parameter = difference.parameter ? `\`${difference.parameter}\`` : '—'; + return `| \`${entry.wrangle_key}\` | ${difference.code} | ${parameter} | ${detail} |`; + }), + ).join('\n'); + const quasiRows = report.quasi_registry_entries.map((entry) => + `| \`${entry.wrangle_key}\` | \`${entry.source_file}\` | ${entry.id ? `\`${entry.id}\`` : 'missing'} | ${entry.runtime_status} | ${entry.normalized_registry_status} | ${entry.runtime_parameter_differences.length} | ${entry.embedded_schema_differences.length} |`, + ).join('\n'); + const supportingRows = report.supporting_markdown.map((entry) => + `- \`${entry.source_file}\` (SHA-256 \`${entry.source_sha256.slice(0, 12)}…\`)`, + ).join('\n'); + + return `# Wrangles Registry Source Reconciliation + +Generated file. Do not edit directly. + +- Runtime source: [\`${report.runtime_source.revision}\`](${report.runtime_source.repository}/commit/${report.runtime_source.revision}) +- Registry version: \`${report.registry_version}\` +- Runtime entries: ${report.summary.runtime_entries} +- Embedded Python schema docstrings: ${report.summary.embedded_schema_entries} +- Existing quasi-registry records: ${report.summary.quasi_registry_entries} +- Normalized Registry entries: ${report.summary.normalized_registry_entries} +- Verified normalized entries: ${report.summary.normalized_verified_entries} +- Quasi-registry records awaiting normalization: ${report.summary.quasi_entries_awaiting_normalization} +- Runtime entries without quasi-registry Markdown: ${report.summary.runtime_entries_without_quasi_registry} +- Quasi-registry records without runtime matches: ${report.summary.quasi_entries_without_runtime} +- Quasi-registry records without UUIDs: ${report.summary.quasi_entries_without_id} +- Supporting and aggregate Markdown files: ${report.summary.supporting_markdown_files} + +Embedded Python schema differences and quasi-registry differences are migration +evidence, not runtime contract failures. The first pass resolves runtime facts +from code, then enriches them from embedded schemas and quasi-registry Markdown. +Signature-owned names, required status, defaults, symbols, and common-control +capabilities must reconcile; individual records can be curated in place later. + +## Normalized Registry entries + +| Registry key | Matched runtime key | Status | Runtime issues | Embedded schema differences | +| --- | --- | --- | ---: | ---: | +${registryRows} + +## Embedded Python schema differences + +| Registry key | Difference | Parameter | Detail | +| --- | --- | --- | --- | +${embeddedRows || '| — | none | — | — |'} + +## Existing quasi-registry inventory + +Every per-wrangle \`_sources/*.md\` record is included below. Display defaults +are retained as migration content and are not treated as Python runtime defaults. +The JSON report records a SHA-256 hash of every source file so changes anywhere +in the quasi-registry remain reviewable. + +| Wrangle key | Source Markdown | UUID | Runtime | Normalization | Runtime parameter differences | Embedded schema differences | +| --- | --- | --- | --- | --- | ---: | ---: | +${quasiRows} + +## Runtime entries without quasi-registry Markdown + +| Runtime key | Python symbol | Embedded schema | +| --- | --- | --- | +${runtimeWithoutQuasiRows || '| — | none | — |'} + +## Supporting and aggregate Markdown + +These files are accounted for as context or templates rather than one-to-one +wrangle records. + +${supportingRows} +`; +} + +function addGeneratedFile(filename, content) { + generatedFiles.set(path.resolve(filename), content.endsWith('\n') ? content : `${content}\n`); +} + +async function readInputs() { + const entrySchemaSource = await fs.readFile(entrySchemaPath, 'utf8'); + const runtimeManifestSchemaSource = await fs.readFile(runtimeManifestSchemaPath, 'utf8'); + const entrySchema = JSON.parse(entrySchemaSource); + const runtimeManifestSchema = JSON.parse(runtimeManifestSchemaSource); + const runtimeManifest = JSON.parse(await fs.readFile(runtimeManifestPath, 'utf8')); + const quasiRegistry = await readQuasiRegistry(); + validateRuntimeManifest(runtimeManifest); + if (runtimeManifest.$schema !== runtimeManifestSchema.$id) { + fail(runtimeManifestPath, '$schema does not match the pinned runtime manifest schema'); + } + const commonDocument = yaml.load(await fs.readFile(commonControlsPath, 'utf8')); + if ( + !isObject(commonDocument) || + commonDocument.schema_version !== ENTRY_SCHEMA_VERSION || + !isObject(commonDocument.controls) + ) { + throw new Error('registry/common/wrangle-controls.yaml is invalid'); + } + for (const [name, control] of Object.entries(commonDocument.controls)) { + if (!isObject(control) || typeof control.description !== 'string') { + throw new Error(`Common control ${name} is invalid`); + } + validateSchemaFragment(control.schema, commonControlsPath, `controls.${name}`); + } + + const entries = []; + for (const sourceFile of await listFiles(entriesRoot, '.md')) { + const source = await fs.readFile(sourceFile, 'utf8'); + const parsed = parseFrontmatter(source, sourceFile); + if (!parsed) continue; + validateTopLevel(parsed.metadata, sourceFile, entrySchema); + validateParameters(parsed.metadata, sourceFile); + const entry = {sourceFile, source, ...parsed}; + if (Array.isArray(parsed.metadata.examples)) await validateExamples(entry); + entries.push(entry); + } + + const ids = new Set(); + const slugs = new Set(); + const recipeKeys = new Set(); + for (const entry of entries) { + if (entry.metadata.id !== null) { + if (ids.has(entry.metadata.id)) fail(entry.sourceFile, `duplicate id ${entry.metadata.id}`); + ids.add(entry.metadata.id); + } + + if (slugs.has(entry.metadata.slug)) fail(entry.sourceFile, `duplicate slug ${entry.metadata.slug}`); + slugs.add(entry.metadata.slug); + + for (const recipeKey of [entry.metadata.wrangle_key, ...(entry.metadata.aliases || [])]) { + if (recipeKeys.has(recipeKey)) fail(entry.sourceFile, `duplicate recipe key or alias ${recipeKey}`); + recipeKeys.add(recipeKey); + } + } + + return { + entries, + controls: commonDocument.controls, + runtimeManifest, + quasiRegistry, + registrySchemas: { + entry: entrySchema, + runtimeManifest: runtimeManifestSchema, + }, + }; +} + +function buildOutputs(entries, controls, reconciliation, registrySchemas, runtimeManifest) { + const publicEntries = entries + .filter((entry) => entry.metadata.visibility === 'public') + .sort((left, right) => left.metadata.wrangle_key.localeCompare(right.metadata.wrangle_key)); + + addGeneratedFile(path.join(docsOutputRoot, 'index.md'), renderDocsIndex(publicEntries)); + for (const entry of publicEntries) { + addGeneratedFile( + path.join(docsOutputRoot, entryOutputRelativePath(entry)), + renderEntryPage(entry, controls), + ); + const rawRelative = path.relative(registryRoot, entry.sourceFile); + addGeneratedFile(path.join(rawOutputRoot, rawRelative), entry.source); + addGeneratedFile( + path.join(rawOutputRoot, entryContractRelativePath(entry)), + JSON.stringify(buildEntryContract(entry, controls), null, 2), + ); + for (const example of entry.metadata.examples) { + for (const fixtureField of ['input_fixture', 'output_fixture']) { + const fixturePath = path.resolve(path.dirname(entry.sourceFile), example[fixtureField]); + const fixtureRelative = path.relative(registryRoot, fixturePath); + addGeneratedFile( + path.join(rawOutputRoot, fixtureRelative), + JSON.stringify(example[`_${fixtureField}`], null, 2), + ); + } + } + } + + addGeneratedFile(path.join(rawOutputRoot, 'index.md'), renderRawIndex(publicEntries)); + const manifest = { + format: 'wrangles-registry', + registry_version: REGISTRY_VERSION, + contract_version: ENTRY_SCHEMA_VERSION, + status: 'pilot', + entry_count: publicEntries.length, + entries: publicEntries.map((entry) => ({ + type: entry.metadata.type, + id: entry.metadata.id, + wrangle_name: entry.metadata.wrangle_name, + namespace: entry.metadata.namespace, + wrangle_key: entry.metadata.wrangle_key, + aliases: entry.metadata.aliases, + slug: entry.metadata.slug, + title: entry.metadata.title, + description: entry.metadata.description, + status: entry.metadata.status, + tags: entry.metadata.tags, + route: entryRoute(entry), + contract_json: `/registry/${posixPath(entryContractRelativePath(entry))}`, + raw_markdown: `/registry/${posixPath(path.relative(registryRoot, entry.sourceFile))}`, + runtime_symbol: entry.metadata.runtime.symbol, + runtime_contract_status: entry.metadata.runtime.contract_status, + example_count: entry.metadata.examples.length, + })), + artifacts: { + index: '/registry/index.md', + recipe_schema: '/schemas/recipes/pilot/schema.json', + entry_schema: '/registry/schema/wrangle-entry.schema.json', + runtime_manifest: '/registry/runtime/wranglespy.json', + runtime_manifest_schema: '/registry/schema/wrangles-runtime-manifest.schema.json', + }, + }; + addGeneratedFile( + path.join(rawOutputRoot, 'manifest.json'), + JSON.stringify(manifest, null, 2), + ); + addGeneratedFile( + path.join(schemaOutputRoot, 'schema.json'), + JSON.stringify(buildRecipeSchema(publicEntries, controls), null, 2), + ); + addGeneratedFile( + path.join(rawOutputRoot, 'schema', 'wrangle-entry.schema.json'), + JSON.stringify(registrySchemas.entry, null, 2), + ); + addGeneratedFile( + path.join(rawOutputRoot, 'schema', 'wrangles-runtime-manifest.schema.json'), + JSON.stringify(registrySchemas.runtimeManifest, null, 2), + ); + addGeneratedFile( + path.join(rawOutputRoot, 'runtime', 'wranglespy.json'), + JSON.stringify(runtimeManifest, null, 2), + ); + addGeneratedFile( + path.join(reportsOutputRoot, 'runtime-reconciliation.json'), + JSON.stringify(reconciliation, null, 2), + ); + addGeneratedFile( + path.join(reportsOutputRoot, 'runtime-reconciliation.md'), + renderReconciliationReport(reconciliation), + ); +} + +async function writeOutputs() { + for (const [filename, content] of generatedFiles) { + await fs.mkdir(path.dirname(filename), {recursive: true}); + await fs.writeFile(filename, content, 'utf8'); + } +} + +async function checkOutputs() { + for (const [filename, expected] of generatedFiles) { + let actual; + try { + actual = await fs.readFile(filename, 'utf8'); + } catch (error) { + fail(filename, error.code === 'ENOENT' ? 'generated artifact is missing' : error.message); + continue; + } + if (actual !== expected) fail(filename, 'generated artifact is stale; run npm run compile:registry'); + } + + const managedRoots = [docsOutputRoot, rawOutputRoot, schemaOutputRoot, reportsOutputRoot]; + const expectedPaths = new Set(generatedFiles.keys()); + for (const root of managedRoots) { + for (const filename of await listFiles(root)) { + if (!expectedPaths.has(path.resolve(filename))) { + fail(filename, 'unexpected generated artifact'); + } + } + } +} + +async function main() { + const checkOnly = process.argv.includes('--check'); + const {entries, controls, runtimeManifest, quasiRegistry, registrySchemas} = await readInputs(); + const reconciliation = reconcileRegistry(entries, runtimeManifest, quasiRegistry); + buildOutputs(entries, controls, reconciliation, registrySchemas, runtimeManifest); + + if (errors.length) { + throw new Error(`Registry validation failed:\n- ${errors.join('\n- ')}`); + } + + if (checkOnly) { + await checkOutputs(); + if (errors.length) { + throw new Error(`Registry artifact check failed:\n- ${errors.join('\n- ')}`); + } + console.log(`Registry is valid and ${generatedFiles.size} generated artifacts are current.`); + } else { + await writeOutputs(); + console.log(`Compiled ${entries.length} Registry entries into ${generatedFiles.size} artifacts.`); + } + console.log( + `Reconciled ${reconciliation.summary.quasi_registry_entries} quasi-registry records and ` + + `${reconciliation.summary.normalized_registry_entries} normalized entries against ` + + `${reconciliation.summary.runtime_entries} runtime wrangles; ` + + `${reconciliation.summary.runtime_entries_without_quasi_registry} runtime entries lack quasi-registry Markdown.`, + ); +} + +main().catch((error) => { + console.error(error.message); + process.exitCode = 1; +}); diff --git a/my-docs-site/scripts/convert-recipe-examples.cjs b/wrangles-docs/scripts/convert-recipe-examples.cjs similarity index 100% rename from my-docs-site/scripts/convert-recipe-examples.cjs rename to wrangles-docs/scripts/convert-recipe-examples.cjs diff --git a/my-docs-site/scripts/generate-wrangle-catalog.cjs b/wrangles-docs/scripts/generate-wrangle-catalog.cjs similarity index 100% rename from my-docs-site/scripts/generate-wrangle-catalog.cjs rename to wrangles-docs/scripts/generate-wrangle-catalog.cjs diff --git a/my-docs-site/scripts/os-network-interfaces-polyfill.cjs b/wrangles-docs/scripts/os-network-interfaces-polyfill.cjs similarity index 100% rename from my-docs-site/scripts/os-network-interfaces-polyfill.cjs rename to wrangles-docs/scripts/os-network-interfaces-polyfill.cjs diff --git a/my-docs-site/scripts/recipe-runner-server.cjs b/wrangles-docs/scripts/recipe-runner-server.cjs similarity index 100% rename from my-docs-site/scripts/recipe-runner-server.cjs rename to wrangles-docs/scripts/recipe-runner-server.cjs diff --git a/my-docs-site/scripts/start-dev.cjs b/wrangles-docs/scripts/start-dev.cjs similarity index 100% rename from my-docs-site/scripts/start-dev.cjs rename to wrangles-docs/scripts/start-dev.cjs diff --git a/my-docs-site/scripts/start-prod.cjs b/wrangles-docs/scripts/start-prod.cjs similarity index 100% rename from my-docs-site/scripts/start-prod.cjs rename to wrangles-docs/scripts/start-prod.cjs diff --git a/my-docs-site/scripts/sync-wrangle-mappings.cjs b/wrangles-docs/scripts/sync-wrangle-mappings.cjs similarity index 100% rename from my-docs-site/scripts/sync-wrangle-mappings.cjs rename to wrangles-docs/scripts/sync-wrangle-mappings.cjs diff --git a/my-docs-site/sidebars.js b/wrangles-docs/sidebars.js similarity index 100% rename from my-docs-site/sidebars.js rename to wrangles-docs/sidebars.js diff --git a/wrangles-docs/sidebarsRegistry.js b/wrangles-docs/sidebarsRegistry.js new file mode 100644 index 0000000..bba4c8a --- /dev/null +++ b/wrangles-docs/sidebarsRegistry.js @@ -0,0 +1,6 @@ +/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ +const sidebarsRegistry = { + registrySidebar: [{type: 'autogenerated', dirName: '.'}], +}; + +export default sidebarsRegistry; diff --git a/my-docs-site/sidebarsWrangle.js b/wrangles-docs/sidebarsWrangle.js similarity index 100% rename from my-docs-site/sidebarsWrangle.js rename to wrangles-docs/sidebarsWrangle.js diff --git a/my-docs-site/src/components/RecipePlayground/context.js b/wrangles-docs/src/components/RecipePlayground/context.js similarity index 100% rename from my-docs-site/src/components/RecipePlayground/context.js rename to wrangles-docs/src/components/RecipePlayground/context.js diff --git a/my-docs-site/src/components/RecipePlayground/index.js b/wrangles-docs/src/components/RecipePlayground/index.js similarity index 100% rename from my-docs-site/src/components/RecipePlayground/index.js rename to wrangles-docs/src/components/RecipePlayground/index.js diff --git a/my-docs-site/src/components/RecipePlayground/styles.module.css b/wrangles-docs/src/components/RecipePlayground/styles.module.css similarity index 100% rename from my-docs-site/src/components/RecipePlayground/styles.module.css rename to wrangles-docs/src/components/RecipePlayground/styles.module.css diff --git a/my-docs-site/src/components/WrangleFlowPlayground/index.js b/wrangles-docs/src/components/WrangleFlowPlayground/index.js similarity index 100% rename from my-docs-site/src/components/WrangleFlowPlayground/index.js rename to wrangles-docs/src/components/WrangleFlowPlayground/index.js diff --git a/my-docs-site/src/components/WrangleFlowPlayground/styles.module.css b/wrangles-docs/src/components/WrangleFlowPlayground/styles.module.css similarity index 100% rename from my-docs-site/src/components/WrangleFlowPlayground/styles.module.css rename to wrangles-docs/src/components/WrangleFlowPlayground/styles.module.css diff --git a/my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.additional.js b/wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.additional.js similarity index 100% rename from my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.additional.js rename to wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.additional.js diff --git a/my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js b/wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js similarity index 100% rename from my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js rename to wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js diff --git a/my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.js b/wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.js similarity index 100% rename from my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.js rename to wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.js diff --git a/my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.overrides.js b/wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.overrides.js similarity index 100% rename from my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.overrides.js rename to wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.overrides.js diff --git a/my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json b/wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json similarity index 100% rename from my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json rename to wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json diff --git a/my-docs-site/src/components/recipeRunnerClient.js b/wrangles-docs/src/components/recipeRunnerClient.js similarity index 100% rename from my-docs-site/src/components/recipeRunnerClient.js rename to wrangles-docs/src/components/recipeRunnerClient.js diff --git a/my-docs-site/src/css/custom.css b/wrangles-docs/src/css/custom.css similarity index 100% rename from my-docs-site/src/css/custom.css rename to wrangles-docs/src/css/custom.css diff --git a/my-docs-site/src/pages/playground.js b/wrangles-docs/src/pages/playground.js similarity index 100% rename from my-docs-site/src/pages/playground.js rename to wrangles-docs/src/pages/playground.js diff --git a/my-docs-site/src/remark/linksListMarker.js b/wrangles-docs/src/remark/linksListMarker.js similarity index 100% rename from my-docs-site/src/remark/linksListMarker.js rename to wrangles-docs/src/remark/linksListMarker.js diff --git a/my-docs-site/src/remark/scrapedAttributes.js b/wrangles-docs/src/remark/scrapedAttributes.js similarity index 100% rename from my-docs-site/src/remark/scrapedAttributes.js rename to wrangles-docs/src/remark/scrapedAttributes.js diff --git a/my-docs-site/src/theme/CodeBlock/Buttons/index.js b/wrangles-docs/src/theme/CodeBlock/Buttons/index.js similarity index 100% rename from my-docs-site/src/theme/CodeBlock/Buttons/index.js rename to wrangles-docs/src/theme/CodeBlock/Buttons/index.js diff --git a/my-docs-site/src/theme/CodeBlock/Buttons/styles.module.css b/wrangles-docs/src/theme/CodeBlock/Buttons/styles.module.css similarity index 100% rename from my-docs-site/src/theme/CodeBlock/Buttons/styles.module.css rename to wrangles-docs/src/theme/CodeBlock/Buttons/styles.module.css diff --git a/my-docs-site/src/theme/DocItem/Layout/index.js b/wrangles-docs/src/theme/DocItem/Layout/index.js similarity index 100% rename from my-docs-site/src/theme/DocItem/Layout/index.js rename to wrangles-docs/src/theme/DocItem/Layout/index.js diff --git a/my-docs-site/src/theme/DocItem/Layout/styles.module.css b/wrangles-docs/src/theme/DocItem/Layout/styles.module.css similarity index 100% rename from my-docs-site/src/theme/DocItem/Layout/styles.module.css rename to wrangles-docs/src/theme/DocItem/Layout/styles.module.css diff --git a/my-docs-site/src/theme/DocItem/TOC/Desktop/index.js b/wrangles-docs/src/theme/DocItem/TOC/Desktop/index.js similarity index 100% rename from my-docs-site/src/theme/DocItem/TOC/Desktop/index.js rename to wrangles-docs/src/theme/DocItem/TOC/Desktop/index.js diff --git a/my-docs-site/src/theme/DocItem/TOC/Desktop/styles.module.css b/wrangles-docs/src/theme/DocItem/TOC/Desktop/styles.module.css similarity index 100% rename from my-docs-site/src/theme/DocItem/TOC/Desktop/styles.module.css rename to wrangles-docs/src/theme/DocItem/TOC/Desktop/styles.module.css diff --git a/my-docs-site/src/theme/Layout/index.js b/wrangles-docs/src/theme/Layout/index.js similarity index 100% rename from my-docs-site/src/theme/Layout/index.js rename to wrangles-docs/src/theme/Layout/index.js diff --git a/my-docs-site/src/theme/NavbarItem/ComponentTypes.js b/wrangles-docs/src/theme/NavbarItem/ComponentTypes.js similarity index 100% rename from my-docs-site/src/theme/NavbarItem/ComponentTypes.js rename to wrangles-docs/src/theme/NavbarItem/ComponentTypes.js diff --git a/my-docs-site/src/theme/NavbarItem/CustomWrangleMode/index.js b/wrangles-docs/src/theme/NavbarItem/CustomWrangleMode/index.js similarity index 100% rename from my-docs-site/src/theme/NavbarItem/CustomWrangleMode/index.js rename to wrangles-docs/src/theme/NavbarItem/CustomWrangleMode/index.js diff --git a/my-docs-site/src/theme/Root/index.js b/wrangles-docs/src/theme/Root/index.js similarity index 100% rename from my-docs-site/src/theme/Root/index.js rename to wrangles-docs/src/theme/Root/index.js diff --git a/my-docs-site/src/theme/SearchBar/index.jsx b/wrangles-docs/src/theme/SearchBar/index.jsx similarity index 100% rename from my-docs-site/src/theme/SearchBar/index.jsx rename to wrangles-docs/src/theme/SearchBar/index.jsx diff --git a/my-docs-site/src/theme/TOCItems/index.js b/wrangles-docs/src/theme/TOCItems/index.js similarity index 100% rename from my-docs-site/src/theme/TOCItems/index.js rename to wrangles-docs/src/theme/TOCItems/index.js diff --git a/my-docs-site/start_prod.py b/wrangles-docs/start_prod.py similarity index 100% rename from my-docs-site/start_prod.py rename to wrangles-docs/start_prod.py diff --git a/my-docs-site/static/add_secret.gif b/wrangles-docs/static/add_secret.gif similarity index 100% rename from my-docs-site/static/add_secret.gif rename to wrangles-docs/static/add_secret.gif diff --git a/my-docs-site/static/adi/check_email.png b/wrangles-docs/static/adi/check_email.png similarity index 100% rename from my-docs-site/static/adi/check_email.png rename to wrangles-docs/static/adi/check_email.png diff --git a/my-docs-site/static/adi/check_error.png b/wrangles-docs/static/adi/check_error.png similarity index 100% rename from my-docs-site/static/adi/check_error.png rename to wrangles-docs/static/adi/check_error.png diff --git a/my-docs-site/static/adi/check_progress.png b/wrangles-docs/static/adi/check_progress.png similarity index 100% rename from my-docs-site/static/adi/check_progress.png rename to wrangles-docs/static/adi/check_progress.png diff --git a/my-docs-site/static/adi/check_progress2.png b/wrangles-docs/static/adi/check_progress2.png similarity index 100% rename from my-docs-site/static/adi/check_progress2.png rename to wrangles-docs/static/adi/check_progress2.png diff --git a/my-docs-site/static/adi/extract_settings.png b/wrangles-docs/static/adi/extract_settings.png similarity index 100% rename from my-docs-site/static/adi/extract_settings.png rename to wrangles-docs/static/adi/extract_settings.png diff --git a/my-docs-site/static/adi/get_to_settings.png b/wrangles-docs/static/adi/get_to_settings.png similarity index 100% rename from my-docs-site/static/adi/get_to_settings.png rename to wrangles-docs/static/adi/get_to_settings.png diff --git a/my-docs-site/static/adi/open_actions.png b/wrangles-docs/static/adi/open_actions.png similarity index 100% rename from my-docs-site/static/adi/open_actions.png rename to wrangles-docs/static/adi/open_actions.png diff --git a/my-docs-site/static/adi/open_logs.png b/wrangles-docs/static/adi/open_logs.png similarity index 100% rename from my-docs-site/static/adi/open_logs.png rename to wrangles-docs/static/adi/open_logs.png diff --git a/my-docs-site/static/adi/open_run.png b/wrangles-docs/static/adi/open_run.png similarity index 100% rename from my-docs-site/static/adi/open_run.png rename to wrangles-docs/static/adi/open_run.png diff --git a/my-docs-site/static/adi/pra_failed.png b/wrangles-docs/static/adi/pra_failed.png similarity index 100% rename from my-docs-site/static/adi/pra_failed.png rename to wrangles-docs/static/adi/pra_failed.png diff --git a/my-docs-site/static/adi/pra_preprocess.png b/wrangles-docs/static/adi/pra_preprocess.png similarity index 100% rename from my-docs-site/static/adi/pra_preprocess.png rename to wrangles-docs/static/adi/pra_preprocess.png diff --git a/my-docs-site/static/adi/pra_run_log.png b/wrangles-docs/static/adi/pra_run_log.png similarity index 100% rename from my-docs-site/static/adi/pra_run_log.png rename to wrangles-docs/static/adi/pra_run_log.png diff --git a/my-docs-site/static/adi/pra_variables.png b/wrangles-docs/static/adi/pra_variables.png similarity index 100% rename from my-docs-site/static/adi/pra_variables.png rename to wrangles-docs/static/adi/pra_variables.png diff --git a/my-docs-site/static/adi/read_error.png b/wrangles-docs/static/adi/read_error.png similarity index 100% rename from my-docs-site/static/adi/read_error.png rename to wrangles-docs/static/adi/read_error.png diff --git a/my-docs-site/static/adi/retrieve_specific_attributes.gif b/wrangles-docs/static/adi/retrieve_specific_attributes.gif similarity index 100% rename from my-docs-site/static/adi/retrieve_specific_attributes.gif rename to wrangles-docs/static/adi/retrieve_specific_attributes.gif diff --git a/my-docs-site/static/adi/run_pra.png b/wrangles-docs/static/adi/run_pra.png similarity index 100% rename from my-docs-site/static/adi/run_pra.png rename to wrangles-docs/static/adi/run_pra.png diff --git a/my-docs-site/static/adi/run_search_only.gif b/wrangles-docs/static/adi/run_search_only.gif similarity index 100% rename from my-docs-site/static/adi/run_search_only.gif rename to wrangles-docs/static/adi/run_search_only.gif diff --git a/my-docs-site/static/adi/scrape_only.png b/wrangles-docs/static/adi/scrape_only.png similarity index 100% rename from my-docs-site/static/adi/scrape_only.png rename to wrangles-docs/static/adi/scrape_only.png diff --git a/my-docs-site/static/extractcodes.gif b/wrangles-docs/static/extractcodes.gif similarity index 100% rename from my-docs-site/static/extractcodes.gif rename to wrangles-docs/static/extractcodes.gif diff --git a/my-docs-site/static/gifs/address-2-wrangles.gif b/wrangles-docs/static/gifs/address-2-wrangles.gif similarity index 100% rename from my-docs-site/static/gifs/address-2-wrangles.gif rename to wrangles-docs/static/gifs/address-2-wrangles.gif diff --git a/my-docs-site/static/gifs/addwrangle.gif b/wrangles-docs/static/gifs/addwrangle.gif similarity index 100% rename from my-docs-site/static/gifs/addwrangle.gif rename to wrangles-docs/static/gifs/addwrangle.gif diff --git a/my-docs-site/static/gifs/adi-how-to/adi_recipe_navigation.gif b/wrangles-docs/static/gifs/adi-how-to/adi_recipe_navigation.gif similarity index 100% rename from my-docs-site/static/gifs/adi-how-to/adi_recipe_navigation.gif rename to wrangles-docs/static/gifs/adi-how-to/adi_recipe_navigation.gif diff --git a/my-docs-site/static/gifs/adi-how-to/pra_workflow.png b/wrangles-docs/static/gifs/adi-how-to/pra_workflow.png similarity index 100% rename from my-docs-site/static/gifs/adi-how-to/pra_workflow.png rename to wrangles-docs/static/gifs/adi-how-to/pra_workflow.png diff --git a/my-docs-site/static/gifs/adi-how-to/search_example.png b/wrangles-docs/static/gifs/adi-how-to/search_example.png similarity index 100% rename from my-docs-site/static/gifs/adi-how-to/search_example.png rename to wrangles-docs/static/gifs/adi-how-to/search_example.png diff --git a/my-docs-site/static/gifs/adi-how-to/snippet_title_position.png b/wrangles-docs/static/gifs/adi-how-to/snippet_title_position.png similarity index 100% rename from my-docs-site/static/gifs/adi-how-to/snippet_title_position.png rename to wrangles-docs/static/gifs/adi-how-to/snippet_title_position.png diff --git a/my-docs-site/static/gifs/chooseyourwrangle.gif b/wrangles-docs/static/gifs/chooseyourwrangle.gif similarity index 100% rename from my-docs-site/static/gifs/chooseyourwrangle.gif rename to wrangles-docs/static/gifs/chooseyourwrangle.gif diff --git a/my-docs-site/static/gifs/cleaning_data.gif b/wrangles-docs/static/gifs/cleaning_data.gif similarity index 100% rename from my-docs-site/static/gifs/cleaning_data.gif rename to wrangles-docs/static/gifs/cleaning_data.gif diff --git a/my-docs-site/static/gifs/colors-extract.gif b/wrangles-docs/static/gifs/colors-extract.gif similarity index 100% rename from my-docs-site/static/gifs/colors-extract.gif rename to wrangles-docs/static/gifs/colors-extract.gif diff --git a/my-docs-site/static/gifs/concatenate_description.gif b/wrangles-docs/static/gifs/concatenate_description.gif similarity index 100% rename from my-docs-site/static/gifs/concatenate_description.gif rename to wrangles-docs/static/gifs/concatenate_description.gif diff --git a/my-docs-site/static/gifs/create_secret.gif b/wrangles-docs/static/gifs/create_secret.gif similarity index 100% rename from my-docs-site/static/gifs/create_secret.gif rename to wrangles-docs/static/gifs/create_secret.gif diff --git a/my-docs-site/static/gifs/create_standardize.gif b/wrangles-docs/static/gifs/create_standardize.gif similarity index 100% rename from my-docs-site/static/gifs/create_standardize.gif rename to wrangles-docs/static/gifs/create_standardize.gif diff --git a/my-docs-site/static/gifs/custom_function.gif b/wrangles-docs/static/gifs/custom_function.gif similarity index 100% rename from my-docs-site/static/gifs/custom_function.gif rename to wrangles-docs/static/gifs/custom_function.gif diff --git a/my-docs-site/static/gifs/extra_spaces.gif b/wrangles-docs/static/gifs/extra_spaces.gif similarity index 100% rename from my-docs-site/static/gifs/extra_spaces.gif rename to wrangles-docs/static/gifs/extra_spaces.gif diff --git a/my-docs-site/static/gifs/extract_ai.gif b/wrangles-docs/static/gifs/extract_ai.gif similarity index 100% rename from my-docs-site/static/gifs/extract_ai.gif rename to wrangles-docs/static/gifs/extract_ai.gif diff --git a/my-docs-site/static/gifs/extract_attributes.gif b/wrangles-docs/static/gifs/extract_attributes.gif similarity index 100% rename from my-docs-site/static/gifs/extract_attributes.gif rename to wrangles-docs/static/gifs/extract_attributes.gif diff --git a/my-docs-site/static/gifs/extract_brands.gif b/wrangles-docs/static/gifs/extract_brands.gif similarity index 100% rename from my-docs-site/static/gifs/extract_brands.gif rename to wrangles-docs/static/gifs/extract_brands.gif diff --git a/my-docs-site/static/gifs/extract_codes.gif b/wrangles-docs/static/gifs/extract_codes.gif similarity index 100% rename from my-docs-site/static/gifs/extract_codes.gif rename to wrangles-docs/static/gifs/extract_codes.gif diff --git a/my-docs-site/static/gifs/extract_countries.gif b/wrangles-docs/static/gifs/extract_countries.gif similarity index 100% rename from my-docs-site/static/gifs/extract_countries.gif rename to wrangles-docs/static/gifs/extract_countries.gif diff --git a/my-docs-site/static/gifs/extract_curly.gif b/wrangles-docs/static/gifs/extract_curly.gif similarity index 100% rename from my-docs-site/static/gifs/extract_curly.gif rename to wrangles-docs/static/gifs/extract_curly.gif diff --git a/my-docs-site/static/gifs/extract_mro_brands.gif b/wrangles-docs/static/gifs/extract_mro_brands.gif similarity index 100% rename from my-docs-site/static/gifs/extract_mro_brands.gif rename to wrangles-docs/static/gifs/extract_mro_brands.gif diff --git a/my-docs-site/static/gifs/extract_price.gif b/wrangles-docs/static/gifs/extract_price.gif similarity index 100% rename from my-docs-site/static/gifs/extract_price.gif rename to wrangles-docs/static/gifs/extract_price.gif diff --git a/my-docs-site/static/gifs/extract_quotes.gif b/wrangles-docs/static/gifs/extract_quotes.gif similarity index 100% rename from my-docs-site/static/gifs/extract_quotes.gif rename to wrangles-docs/static/gifs/extract_quotes.gif diff --git a/my-docs-site/static/gifs/extract_weight.gif b/wrangles-docs/static/gifs/extract_weight.gif similarity index 100% rename from my-docs-site/static/gifs/extract_weight.gif rename to wrangles-docs/static/gifs/extract_weight.gif diff --git a/my-docs-site/static/gifs/extractai_demo.gif b/wrangles-docs/static/gifs/extractai_demo.gif similarity index 100% rename from my-docs-site/static/gifs/extractai_demo.gif rename to wrangles-docs/static/gifs/extractai_demo.gif diff --git a/my-docs-site/static/gifs/extractattributes.gif b/wrangles-docs/static/gifs/extractattributes.gif similarity index 100% rename from my-docs-site/static/gifs/extractattributes.gif rename to wrangles-docs/static/gifs/extractattributes.gif diff --git a/my-docs-site/static/gifs/extractcountries.gif b/wrangles-docs/static/gifs/extractcountries.gif similarity index 100% rename from my-docs-site/static/gifs/extractcountries.gif rename to wrangles-docs/static/gifs/extractcountries.gif diff --git a/my-docs-site/static/gifs/extracting_data_recipe.gif b/wrangles-docs/static/gifs/extracting_data_recipe.gif similarity index 100% rename from my-docs-site/static/gifs/extracting_data_recipe.gif rename to wrangles-docs/static/gifs/extracting_data_recipe.gif diff --git a/my-docs-site/static/gifs/finding_numbers.gif b/wrangles-docs/static/gifs/finding_numbers.gif similarity index 100% rename from my-docs-site/static/gifs/finding_numbers.gif rename to wrangles-docs/static/gifs/finding_numbers.gif diff --git a/my-docs-site/static/gifs/format_pad.gif b/wrangles-docs/static/gifs/format_pad.gif similarity index 100% rename from my-docs-site/static/gifs/format_pad.gif rename to wrangles-docs/static/gifs/format_pad.gif diff --git a/my-docs-site/static/gifs/get-results.gif b/wrangles-docs/static/gifs/get-results.gif similarity index 100% rename from my-docs-site/static/gifs/get-results.gif rename to wrangles-docs/static/gifs/get-results.gif diff --git a/my-docs-site/static/gifs/hide.gif b/wrangles-docs/static/gifs/hide.gif similarity index 100% rename from my-docs-site/static/gifs/hide.gif rename to wrangles-docs/static/gifs/hide.gif diff --git a/my-docs-site/static/gifs/leading_zeros.gif b/wrangles-docs/static/gifs/leading_zeros.gif similarity index 100% rename from my-docs-site/static/gifs/leading_zeros.gif rename to wrangles-docs/static/gifs/leading_zeros.gif diff --git a/my-docs-site/static/gifs/lookup/semantic_example.gif b/wrangles-docs/static/gifs/lookup/semantic_example.gif similarity index 100% rename from my-docs-site/static/gifs/lookup/semantic_example.gif rename to wrangles-docs/static/gifs/lookup/semantic_example.gif diff --git a/my-docs-site/static/gifs/lower_case.gif b/wrangles-docs/static/gifs/lower_case.gif similarity index 100% rename from my-docs-site/static/gifs/lower_case.gif rename to wrangles-docs/static/gifs/lower_case.gif diff --git a/my-docs-site/static/gifs/map/general_map.gif b/wrangles-docs/static/gifs/map/general_map.gif similarity index 100% rename from my-docs-site/static/gifs/map/general_map.gif rename to wrangles-docs/static/gifs/map/general_map.gif diff --git a/my-docs-site/static/gifs/map/magic_button.gif b/wrangles-docs/static/gifs/map/magic_button.gif similarity index 100% rename from my-docs-site/static/gifs/map/magic_button.gif rename to wrangles-docs/static/gifs/map/magic_button.gif diff --git a/my-docs-site/static/gifs/map/map_copy_down.gif b/wrangles-docs/static/gifs/map/map_copy_down.gif similarity index 100% rename from my-docs-site/static/gifs/map/map_copy_down.gif rename to wrangles-docs/static/gifs/map/map_copy_down.gif diff --git a/my-docs-site/static/gifs/map/map_flatten.gif b/wrangles-docs/static/gifs/map/map_flatten.gif similarity index 100% rename from my-docs-site/static/gifs/map/map_flatten.gif rename to wrangles-docs/static/gifs/map/map_flatten.gif diff --git a/my-docs-site/static/gifs/map/map_gather.gif b/wrangles-docs/static/gifs/map/map_gather.gif similarity index 100% rename from my-docs-site/static/gifs/map/map_gather.gif rename to wrangles-docs/static/gifs/map/map_gather.gif diff --git a/my-docs-site/static/gifs/map/map_unmerge.gif b/wrangles-docs/static/gifs/map/map_unmerge.gif similarity index 100% rename from my-docs-site/static/gifs/map/map_unmerge.gif rename to wrangles-docs/static/gifs/map/map_unmerge.gif diff --git a/my-docs-site/static/gifs/materials.gif b/wrangles-docs/static/gifs/materials.gif similarity index 100% rename from my-docs-site/static/gifs/materials.gif rename to wrangles-docs/static/gifs/materials.gif diff --git a/my-docs-site/static/gifs/mro_abbreviations.gif b/wrangles-docs/static/gifs/mro_abbreviations.gif similarity index 100% rename from my-docs-site/static/gifs/mro_abbreviations.gif rename to wrangles-docs/static/gifs/mro_abbreviations.gif diff --git a/my-docs-site/static/gifs/mrobrands.gif b/wrangles-docs/static/gifs/mrobrands.gif similarity index 100% rename from my-docs-site/static/gifs/mrobrands.gif rename to wrangles-docs/static/gifs/mrobrands.gif diff --git a/my-docs-site/static/gifs/my-wrangles/clone.gif b/wrangles-docs/static/gifs/my-wrangles/clone.gif similarity index 100% rename from my-docs-site/static/gifs/my-wrangles/clone.gif rename to wrangles-docs/static/gifs/my-wrangles/clone.gif diff --git a/my-docs-site/static/gifs/permissions.gif b/wrangles-docs/static/gifs/permissions.gif similarity index 100% rename from my-docs-site/static/gifs/permissions.gif rename to wrangles-docs/static/gifs/permissions.gif diff --git a/my-docs-site/static/gifs/prefix.gif b/wrangles-docs/static/gifs/prefix.gif similarity index 100% rename from my-docs-site/static/gifs/prefix.gif rename to wrangles-docs/static/gifs/prefix.gif diff --git a/my-docs-site/static/gifs/product_categories.gif b/wrangles-docs/static/gifs/product_categories.gif similarity index 100% rename from my-docs-site/static/gifs/product_categories.gif rename to wrangles-docs/static/gifs/product_categories.gif diff --git a/my-docs-site/static/gifs/rearrange_variables.gif b/wrangles-docs/static/gifs/rearrange_variables.gif similarity index 100% rename from my-docs-site/static/gifs/rearrange_variables.gif rename to wrangles-docs/static/gifs/rearrange_variables.gif diff --git a/my-docs-site/static/gifs/recipe.gif b/wrangles-docs/static/gifs/recipe.gif similarity index 100% rename from my-docs-site/static/gifs/recipe.gif rename to wrangles-docs/static/gifs/recipe.gif diff --git a/my-docs-site/static/gifs/recipedemo.gif b/wrangles-docs/static/gifs/recipedemo.gif similarity index 100% rename from my-docs-site/static/gifs/recipedemo.gif rename to wrangles-docs/static/gifs/recipedemo.gif diff --git a/my-docs-site/static/gifs/recipes/organization_secrets.gif b/wrangles-docs/static/gifs/recipes/organization_secrets.gif similarity index 100% rename from my-docs-site/static/gifs/recipes/organization_secrets.gif rename to wrangles-docs/static/gifs/recipes/organization_secrets.gif diff --git a/my-docs-site/static/gifs/recipes/show_secrets.png b/wrangles-docs/static/gifs/recipes/show_secrets.png similarity index 100% rename from my-docs-site/static/gifs/recipes/show_secrets.png rename to wrangles-docs/static/gifs/recipes/show_secrets.png diff --git a/my-docs-site/static/gifs/recipes/user_secrets.gif b/wrangles-docs/static/gifs/recipes/user_secrets.gif similarity index 100% rename from my-docs-site/static/gifs/recipes/user_secrets.gif rename to wrangles-docs/static/gifs/recipes/user_secrets.gif diff --git a/my-docs-site/static/gifs/remove_aaa_0000.gif b/wrangles-docs/static/gifs/remove_aaa_0000.gif similarity index 100% rename from my-docs-site/static/gifs/remove_aaa_0000.gif rename to wrangles-docs/static/gifs/remove_aaa_0000.gif diff --git a/my-docs-site/static/gifs/remove_bar_and_brackets.gif b/wrangles-docs/static/gifs/remove_bar_and_brackets.gif similarity index 100% rename from my-docs-site/static/gifs/remove_bar_and_brackets.gif rename to wrangles-docs/static/gifs/remove_bar_and_brackets.gif diff --git a/my-docs-site/static/gifs/remove_brackets.gif b/wrangles-docs/static/gifs/remove_brackets.gif similarity index 100% rename from my-docs-site/static/gifs/remove_brackets.gif rename to wrangles-docs/static/gifs/remove_brackets.gif diff --git a/my-docs-site/static/gifs/remove_user.gif b/wrangles-docs/static/gifs/remove_user.gif similarity index 100% rename from my-docs-site/static/gifs/remove_user.gif rename to wrangles-docs/static/gifs/remove_user.gif diff --git a/my-docs-site/static/gifs/remove_words.gif b/wrangles-docs/static/gifs/remove_words.gif similarity index 100% rename from my-docs-site/static/gifs/remove_words.gif rename to wrangles-docs/static/gifs/remove_words.gif diff --git a/my-docs-site/static/gifs/select-data.gif b/wrangles-docs/static/gifs/select-data.gif similarity index 100% rename from my-docs-site/static/gifs/select-data.gif rename to wrangles-docs/static/gifs/select-data.gif diff --git a/my-docs-site/static/gifs/sharestandardize.gif b/wrangles-docs/static/gifs/sharestandardize.gif similarity index 100% rename from my-docs-site/static/gifs/sharestandardize.gif rename to wrangles-docs/static/gifs/sharestandardize.gif diff --git a/my-docs-site/static/gifs/spaces.gif b/wrangles-docs/static/gifs/spaces.gif similarity index 100% rename from my-docs-site/static/gifs/spaces.gif rename to wrangles-docs/static/gifs/spaces.gif diff --git a/my-docs-site/static/gifs/split.gif b/wrangles-docs/static/gifs/split.gif similarity index 100% rename from my-docs-site/static/gifs/split.gif rename to wrangles-docs/static/gifs/split.gif diff --git a/my-docs-site/static/gifs/split_codes.gif b/wrangles-docs/static/gifs/split_codes.gif similarity index 100% rename from my-docs-site/static/gifs/split_codes.gif rename to wrangles-docs/static/gifs/split_codes.gif diff --git a/my-docs-site/static/gifs/standardize.gif b/wrangles-docs/static/gifs/standardize.gif similarity index 100% rename from my-docs-site/static/gifs/standardize.gif rename to wrangles-docs/static/gifs/standardize.gif diff --git a/my-docs-site/static/gifs/standardize_abbrevs.gif b/wrangles-docs/static/gifs/standardize_abbrevs.gif similarity index 100% rename from my-docs-site/static/gifs/standardize_abbrevs.gif rename to wrangles-docs/static/gifs/standardize_abbrevs.gif diff --git a/my-docs-site/static/gifs/tagsanddescriptions.gif b/wrangles-docs/static/gifs/tagsanddescriptions.gif similarity index 100% rename from my-docs-site/static/gifs/tagsanddescriptions.gif rename to wrangles-docs/static/gifs/tagsanddescriptions.gif diff --git a/my-docs-site/static/gifs/taskpanenavigation.gif b/wrangles-docs/static/gifs/taskpanenavigation.gif similarity index 100% rename from my-docs-site/static/gifs/taskpanenavigation.gif rename to wrangles-docs/static/gifs/taskpanenavigation.gif diff --git a/my-docs-site/static/gifs/translate-enrich.gif b/wrangles-docs/static/gifs/translate-enrich.gif similarity index 100% rename from my-docs-site/static/gifs/translate-enrich.gif rename to wrangles-docs/static/gifs/translate-enrich.gif diff --git a/my-docs-site/static/gifs/unspsc.gif b/wrangles-docs/static/gifs/unspsc.gif similarity index 100% rename from my-docs-site/static/gifs/unspsc.gif rename to wrangles-docs/static/gifs/unspsc.gif diff --git a/my-docs-site/static/gifs/update_extract_brands.gif b/wrangles-docs/static/gifs/update_extract_brands.gif similarity index 100% rename from my-docs-site/static/gifs/update_extract_brands.gif rename to wrangles-docs/static/gifs/update_extract_brands.gif diff --git a/my-docs-site/static/gifs/updatecustomextract.gif b/wrangles-docs/static/gifs/updatecustomextract.gif similarity index 100% rename from my-docs-site/static/gifs/updatecustomextract.gif rename to wrangles-docs/static/gifs/updatecustomextract.gif diff --git a/my-docs-site/static/gifs/variables/boolean.gif b/wrangles-docs/static/gifs/variables/boolean.gif similarity index 100% rename from my-docs-site/static/gifs/variables/boolean.gif rename to wrangles-docs/static/gifs/variables/boolean.gif diff --git a/my-docs-site/static/gifs/variables/columns.gif b/wrangles-docs/static/gifs/variables/columns.gif similarity index 100% rename from my-docs-site/static/gifs/variables/columns.gif rename to wrangles-docs/static/gifs/variables/columns.gif diff --git a/my-docs-site/static/gifs/variables/constant_variable.gif b/wrangles-docs/static/gifs/variables/constant_variable.gif similarity index 100% rename from my-docs-site/static/gifs/variables/constant_variable.gif rename to wrangles-docs/static/gifs/variables/constant_variable.gif diff --git a/my-docs-site/static/gifs/variables/date.gif b/wrangles-docs/static/gifs/variables/date.gif similarity index 100% rename from my-docs-site/static/gifs/variables/date.gif rename to wrangles-docs/static/gifs/variables/date.gif diff --git a/my-docs-site/static/gifs/variables/dropdown.gif b/wrangles-docs/static/gifs/variables/dropdown.gif similarity index 100% rename from my-docs-site/static/gifs/variables/dropdown.gif rename to wrangles-docs/static/gifs/variables/dropdown.gif diff --git a/my-docs-site/static/gifs/variables/function.gif b/wrangles-docs/static/gifs/variables/function.gif similarity index 100% rename from my-docs-site/static/gifs/variables/function.gif rename to wrangles-docs/static/gifs/variables/function.gif diff --git a/my-docs-site/static/gifs/variables/multiline_text.gif b/wrangles-docs/static/gifs/variables/multiline_text.gif similarity index 100% rename from my-docs-site/static/gifs/variables/multiline_text.gif rename to wrangles-docs/static/gifs/variables/multiline_text.gif diff --git a/my-docs-site/static/gifs/variables/number.gif b/wrangles-docs/static/gifs/variables/number.gif similarity index 100% rename from my-docs-site/static/gifs/variables/number.gif rename to wrangles-docs/static/gifs/variables/number.gif diff --git a/my-docs-site/static/gifs/variables/right_click_insert.gif b/wrangles-docs/static/gifs/variables/right_click_insert.gif similarity index 100% rename from my-docs-site/static/gifs/variables/right_click_insert.gif rename to wrangles-docs/static/gifs/variables/right_click_insert.gif diff --git a/my-docs-site/static/gifs/variables/text_variable.gif b/wrangles-docs/static/gifs/variables/text_variable.gif similarity index 100% rename from my-docs-site/static/gifs/variables/text_variable.gif rename to wrangles-docs/static/gifs/variables/text_variable.gif diff --git a/my-docs-site/static/gifs/wrangle_search.gif b/wrangles-docs/static/gifs/wrangle_search.gif similarity index 100% rename from my-docs-site/static/gifs/wrangle_search.gif rename to wrangles-docs/static/gifs/wrangle_search.gif diff --git a/my-docs-site/static/gifs/wrangle_search_filtering.gif b/wrangles-docs/static/gifs/wrangle_search_filtering.gif similarity index 100% rename from my-docs-site/static/gifs/wrangle_search_filtering.gif rename to wrangles-docs/static/gifs/wrangle_search_filtering.gif diff --git a/my-docs-site/static/group_members.gif b/wrangles-docs/static/group_members.gif similarity index 100% rename from my-docs-site/static/group_members.gif rename to wrangles-docs/static/group_members.gif diff --git a/my-docs-site/static/images/1.png b/wrangles-docs/static/images/1.png similarity index 100% rename from my-docs-site/static/images/1.png rename to wrangles-docs/static/images/1.png diff --git a/my-docs-site/static/images/2.png b/wrangles-docs/static/images/2.png similarity index 100% rename from my-docs-site/static/images/2.png rename to wrangles-docs/static/images/2.png diff --git a/my-docs-site/static/images/account/account_menu.gif b/wrangles-docs/static/images/account/account_menu.gif similarity index 100% rename from my-docs-site/static/images/account/account_menu.gif rename to wrangles-docs/static/images/account/account_menu.gif diff --git a/my-docs-site/static/images/account/creating_a_secret.gif b/wrangles-docs/static/images/account/creating_a_secret.gif similarity index 100% rename from my-docs-site/static/images/account/creating_a_secret.gif rename to wrangles-docs/static/images/account/creating_a_secret.gif diff --git a/my-docs-site/static/images/account/files.gif b/wrangles-docs/static/images/account/files.gif similarity index 100% rename from my-docs-site/static/images/account/files.gif rename to wrangles-docs/static/images/account/files.gif diff --git a/my-docs-site/static/images/account/org_permission.gif b/wrangles-docs/static/images/account/org_permission.gif similarity index 100% rename from my-docs-site/static/images/account/org_permission.gif rename to wrangles-docs/static/images/account/org_permission.gif diff --git a/my-docs-site/static/images/account/personal_info.png b/wrangles-docs/static/images/account/personal_info.png similarity index 100% rename from my-docs-site/static/images/account/personal_info.png rename to wrangles-docs/static/images/account/personal_info.png diff --git a/my-docs-site/static/images/account/ribbon.png b/wrangles-docs/static/images/account/ribbon.png similarity index 100% rename from my-docs-site/static/images/account/ribbon.png rename to wrangles-docs/static/images/account/ribbon.png diff --git a/my-docs-site/static/images/account/secrets_flow.png b/wrangles-docs/static/images/account/secrets_flow.png similarity index 100% rename from my-docs-site/static/images/account/secrets_flow.png rename to wrangles-docs/static/images/account/secrets_flow.png diff --git a/my-docs-site/static/images/account/signing_in.png b/wrangles-docs/static/images/account/signing_in.png similarity index 100% rename from my-docs-site/static/images/account/signing_in.png rename to wrangles-docs/static/images/account/signing_in.png diff --git a/my-docs-site/static/images/account/teams.gif b/wrangles-docs/static/images/account/teams.gif similarity index 100% rename from my-docs-site/static/images/account/teams.gif rename to wrangles-docs/static/images/account/teams.gif diff --git a/my-docs-site/static/images/address-countries-output.png b/wrangles-docs/static/images/address-countries-output.png similarity index 100% rename from my-docs-site/static/images/address-countries-output.png rename to wrangles-docs/static/images/address-countries-output.png diff --git a/my-docs-site/static/images/attributesoutput.png b/wrangles-docs/static/images/attributesoutput.png similarity index 100% rename from my-docs-site/static/images/attributesoutput.png rename to wrangles-docs/static/images/attributesoutput.png diff --git a/my-docs-site/static/images/classify_versions.png b/wrangles-docs/static/images/classify_versions.png similarity index 100% rename from my-docs-site/static/images/classify_versions.png rename to wrangles-docs/static/images/classify_versions.png diff --git a/my-docs-site/static/images/clean_part_numbers.png b/wrangles-docs/static/images/clean_part_numbers.png similarity index 100% rename from my-docs-site/static/images/clean_part_numbers.png rename to wrangles-docs/static/images/clean_part_numbers.png diff --git a/my-docs-site/static/images/code-output.png b/wrangles-docs/static/images/code-output.png similarity index 100% rename from my-docs-site/static/images/code-output.png rename to wrangles-docs/static/images/code-output.png diff --git a/my-docs-site/static/images/combining-descriptions/original_data.png b/wrangles-docs/static/images/combining-descriptions/original_data.png similarity index 100% rename from my-docs-site/static/images/combining-descriptions/original_data.png rename to wrangles-docs/static/images/combining-descriptions/original_data.png diff --git a/my-docs-site/static/images/combining-descriptions/output.png b/wrangles-docs/static/images/combining-descriptions/output.png similarity index 100% rename from my-docs-site/static/images/combining-descriptions/output.png rename to wrangles-docs/static/images/combining-descriptions/output.png diff --git a/my-docs-site/static/images/combining-descriptions/remove_punct_training_data.png b/wrangles-docs/static/images/combining-descriptions/remove_punct_training_data.png similarity index 100% rename from my-docs-site/static/images/combining-descriptions/remove_punct_training_data.png rename to wrangles-docs/static/images/combining-descriptions/remove_punct_training_data.png diff --git a/my-docs-site/static/images/compare_recipe.png b/wrangles-docs/static/images/compare_recipe.png similarity index 100% rename from my-docs-site/static/images/compare_recipe.png rename to wrangles-docs/static/images/compare_recipe.png diff --git a/my-docs-site/static/images/connectors/ckan_logo.png b/wrangles-docs/static/images/connectors/ckan_logo.png similarity index 100% rename from my-docs-site/static/images/connectors/ckan_logo.png rename to wrangles-docs/static/images/connectors/ckan_logo.png diff --git a/my-docs-site/static/images/connectors/excel.png b/wrangles-docs/static/images/connectors/excel.png similarity index 100% rename from my-docs-site/static/images/connectors/excel.png rename to wrangles-docs/static/images/connectors/excel.png diff --git a/my-docs-site/static/images/connectors/jinja.png b/wrangles-docs/static/images/connectors/jinja.png similarity index 100% rename from my-docs-site/static/images/connectors/jinja.png rename to wrangles-docs/static/images/connectors/jinja.png diff --git a/my-docs-site/static/images/convert.png b/wrangles-docs/static/images/convert.png similarity index 100% rename from my-docs-site/static/images/convert.png rename to wrangles-docs/static/images/convert.png diff --git a/my-docs-site/static/images/curly_brackets.png b/wrangles-docs/static/images/curly_brackets.png similarity index 100% rename from my-docs-site/static/images/curly_brackets.png rename to wrangles-docs/static/images/curly_brackets.png diff --git a/my-docs-site/static/images/customoneoutput.png b/wrangles-docs/static/images/customoneoutput.png similarity index 100% rename from my-docs-site/static/images/customoneoutput.png rename to wrangles-docs/static/images/customoneoutput.png diff --git a/my-docs-site/static/images/data_cleanup.png b/wrangles-docs/static/images/data_cleanup.png similarity index 100% rename from my-docs-site/static/images/data_cleanup.png rename to wrangles-docs/static/images/data_cleanup.png diff --git a/my-docs-site/static/images/demo-brands-custom.png b/wrangles-docs/static/images/demo-brands-custom.png similarity index 100% rename from my-docs-site/static/images/demo-brands-custom.png rename to wrangles-docs/static/images/demo-brands-custom.png diff --git a/my-docs-site/static/images/demo-serp.png b/wrangles-docs/static/images/demo-serp.png similarity index 100% rename from my-docs-site/static/images/demo-serp.png rename to wrangles-docs/static/images/demo-serp.png diff --git a/my-docs-site/static/images/demo_-_products.png b/wrangles-docs/static/images/demo_-_products.png similarity index 100% rename from my-docs-site/static/images/demo_-_products.png rename to wrangles-docs/static/images/demo_-_products.png diff --git a/my-docs-site/static/images/demo_brands.png b/wrangles-docs/static/images/demo_brands.png similarity index 100% rename from my-docs-site/static/images/demo_brands.png rename to wrangles-docs/static/images/demo_brands.png diff --git a/my-docs-site/static/images/demo_price.png b/wrangles-docs/static/images/demo_price.png similarity index 100% rename from my-docs-site/static/images/demo_price.png rename to wrangles-docs/static/images/demo_price.png diff --git a/my-docs-site/static/images/demo_product_type.png b/wrangles-docs/static/images/demo_product_type.png similarity index 100% rename from my-docs-site/static/images/demo_product_type.png rename to wrangles-docs/static/images/demo_product_type.png diff --git a/my-docs-site/static/images/edit_extract.png b/wrangles-docs/static/images/edit_extract.png similarity index 100% rename from my-docs-site/static/images/edit_extract.png rename to wrangles-docs/static/images/edit_extract.png diff --git a/my-docs-site/static/images/edit_standardize.png b/wrangles-docs/static/images/edit_standardize.png similarity index 100% rename from my-docs-site/static/images/edit_standardize.png rename to wrangles-docs/static/images/edit_standardize.png diff --git a/my-docs-site/static/images/extraactoptions.png b/wrangles-docs/static/images/extraactoptions.png similarity index 100% rename from my-docs-site/static/images/extraactoptions.png rename to wrangles-docs/static/images/extraactoptions.png diff --git a/my-docs-site/static/images/extract-brackets-curly-output.png b/wrangles-docs/static/images/extract-brackets-curly-output.png similarity index 100% rename from my-docs-site/static/images/extract-brackets-curly-output.png rename to wrangles-docs/static/images/extract-brackets-curly-output.png diff --git a/my-docs-site/static/images/extract_brackets.png b/wrangles-docs/static/images/extract_brackets.png similarity index 100% rename from my-docs-site/static/images/extract_brackets.png rename to wrangles-docs/static/images/extract_brackets.png diff --git a/my-docs-site/static/images/extract_quotes.png b/wrangles-docs/static/images/extract_quotes.png similarity index 100% rename from my-docs-site/static/images/extract_quotes.png rename to wrangles-docs/static/images/extract_quotes.png diff --git a/my-docs-site/static/images/extractbrackets.gif b/wrangles-docs/static/images/extractbrackets.gif similarity index 100% rename from my-docs-site/static/images/extractbrackets.gif rename to wrangles-docs/static/images/extractbrackets.gif diff --git a/my-docs-site/static/images/extracttaskpane.png b/wrangles-docs/static/images/extracttaskpane.png similarity index 100% rename from my-docs-site/static/images/extracttaskpane.png rename to wrangles-docs/static/images/extracttaskpane.png diff --git a/my-docs-site/static/images/final_product.png b/wrangles-docs/static/images/final_product.png similarity index 100% rename from my-docs-site/static/images/final_product.png rename to wrangles-docs/static/images/final_product.png diff --git a/my-docs-site/static/images/find_wrangle.png b/wrangles-docs/static/images/find_wrangle.png similarity index 100% rename from my-docs-site/static/images/find_wrangle.png rename to wrangles-docs/static/images/find_wrangle.png diff --git a/my-docs-site/static/images/icons/mongodb.png b/wrangles-docs/static/images/icons/mongodb.png similarity index 100% rename from my-docs-site/static/images/icons/mongodb.png rename to wrangles-docs/static/images/icons/mongodb.png diff --git a/my-docs-site/static/images/icons/mssql.svg b/wrangles-docs/static/images/icons/mssql.svg similarity index 100% rename from my-docs-site/static/images/icons/mssql.svg rename to wrangles-docs/static/images/icons/mssql.svg diff --git a/my-docs-site/static/images/icons/mysql.svg b/wrangles-docs/static/images/icons/mysql.svg similarity index 100% rename from my-docs-site/static/images/icons/mysql.svg rename to wrangles-docs/static/images/icons/mysql.svg diff --git a/my-docs-site/static/images/icons/postgresql.svg b/wrangles-docs/static/images/icons/postgresql.svg similarity index 100% rename from my-docs-site/static/images/icons/postgresql.svg rename to wrangles-docs/static/images/icons/postgresql.svg diff --git a/my-docs-site/static/images/icons/pricefx.jpg b/wrangles-docs/static/images/icons/pricefx.jpg similarity index 100% rename from my-docs-site/static/images/icons/pricefx.jpg rename to wrangles-docs/static/images/icons/pricefx.jpg diff --git a/my-docs-site/static/images/icons/s3.svg b/wrangles-docs/static/images/icons/s3.svg similarity index 100% rename from my-docs-site/static/images/icons/s3.svg rename to wrangles-docs/static/images/icons/s3.svg diff --git a/my-docs-site/static/images/icons/salesforce.png b/wrangles-docs/static/images/icons/salesforce.png similarity index 100% rename from my-docs-site/static/images/icons/salesforce.png rename to wrangles-docs/static/images/icons/salesforce.png diff --git a/my-docs-site/static/images/icons/sqlite_logo.png b/wrangles-docs/static/images/icons/sqlite_logo.png similarity index 100% rename from my-docs-site/static/images/icons/sqlite_logo.png rename to wrangles-docs/static/images/icons/sqlite_logo.png diff --git a/my-docs-site/static/images/icons/ssh.svg b/wrangles-docs/static/images/icons/ssh.svg similarity index 100% rename from my-docs-site/static/images/icons/ssh.svg rename to wrangles-docs/static/images/icons/ssh.svg diff --git a/my-docs-site/static/images/install-python-extension.png b/wrangles-docs/static/images/install-python-extension.png similarity index 100% rename from my-docs-site/static/images/install-python-extension.png rename to wrangles-docs/static/images/install-python-extension.png diff --git a/my-docs-site/static/images/list_string_data.png b/wrangles-docs/static/images/list_string_data.png similarity index 100% rename from my-docs-site/static/images/list_string_data.png rename to wrangles-docs/static/images/list_string_data.png diff --git a/my-docs-site/static/images/lookup/editlookup.png b/wrangles-docs/static/images/lookup/editlookup.png similarity index 100% rename from my-docs-site/static/images/lookup/editlookup.png rename to wrangles-docs/static/images/lookup/editlookup.png diff --git a/my-docs-site/static/images/lookup/lookup_abbreviations.gif b/wrangles-docs/static/images/lookup/lookup_abbreviations.gif similarity index 100% rename from my-docs-site/static/images/lookup/lookup_abbreviations.gif rename to wrangles-docs/static/images/lookup/lookup_abbreviations.gif diff --git a/my-docs-site/static/images/lookup/mywrangleslookup.png b/wrangles-docs/static/images/lookup/mywrangleslookup.png similarity index 100% rename from my-docs-site/static/images/lookup/mywrangleslookup.png rename to wrangles-docs/static/images/lookup/mywrangleslookup.png diff --git a/my-docs-site/static/images/lookup/trainkeylookup.png b/wrangles-docs/static/images/lookup/trainkeylookup.png similarity index 100% rename from my-docs-site/static/images/lookup/trainkeylookup.png rename to wrangles-docs/static/images/lookup/trainkeylookup.png diff --git a/my-docs-site/static/images/map/add_new_column.png b/wrangles-docs/static/images/map/add_new_column.png similarity index 100% rename from my-docs-site/static/images/map/add_new_column.png rename to wrangles-docs/static/images/map/add_new_column.png diff --git a/my-docs-site/static/images/map/allow_dynamic_columns.png b/wrangles-docs/static/images/map/allow_dynamic_columns.png similarity index 100% rename from my-docs-site/static/images/map/allow_dynamic_columns.png rename to wrangles-docs/static/images/map/allow_dynamic_columns.png diff --git a/my-docs-site/static/images/map/clear_mapping.png b/wrangles-docs/static/images/map/clear_mapping.png similarity index 100% rename from my-docs-site/static/images/map/clear_mapping.png rename to wrangles-docs/static/images/map/clear_mapping.png diff --git a/my-docs-site/static/images/map/delete_magic_data.png b/wrangles-docs/static/images/map/delete_magic_data.png similarity index 100% rename from my-docs-site/static/images/map/delete_magic_data.png rename to wrangles-docs/static/images/map/delete_magic_data.png diff --git a/my-docs-site/static/images/map/gather_down.png b/wrangles-docs/static/images/map/gather_down.png similarity index 100% rename from my-docs-site/static/images/map/gather_down.png rename to wrangles-docs/static/images/map/gather_down.png diff --git a/my-docs-site/static/images/map/map_copy_down.png b/wrangles-docs/static/images/map/map_copy_down.png similarity index 100% rename from my-docs-site/static/images/map/map_copy_down.png rename to wrangles-docs/static/images/map/map_copy_down.png diff --git a/my-docs-site/static/images/map/map_fill_left_right_up.png b/wrangles-docs/static/images/map/map_fill_left_right_up.png similarity index 100% rename from my-docs-site/static/images/map/map_fill_left_right_up.png rename to wrangles-docs/static/images/map/map_fill_left_right_up.png diff --git a/my-docs-site/static/images/map/map_filters.png b/wrangles-docs/static/images/map/map_filters.png similarity index 100% rename from my-docs-site/static/images/map/map_filters.png rename to wrangles-docs/static/images/map/map_filters.png diff --git a/my-docs-site/static/images/map/map_flatten.png b/wrangles-docs/static/images/map/map_flatten.png similarity index 100% rename from my-docs-site/static/images/map/map_flatten.png rename to wrangles-docs/static/images/map/map_flatten.png diff --git a/my-docs-site/static/images/map/map_gather.png b/wrangles-docs/static/images/map/map_gather.png similarity index 100% rename from my-docs-site/static/images/map/map_gather.png rename to wrangles-docs/static/images/map/map_gather.png diff --git a/my-docs-site/static/images/map/map_settings.png b/wrangles-docs/static/images/map/map_settings.png similarity index 100% rename from my-docs-site/static/images/map/map_settings.png rename to wrangles-docs/static/images/map/map_settings.png diff --git a/my-docs-site/static/images/map/map_unmerge.png b/wrangles-docs/static/images/map/map_unmerge.png similarity index 100% rename from my-docs-site/static/images/map/map_unmerge.png rename to wrangles-docs/static/images/map/map_unmerge.png diff --git a/my-docs-site/static/images/map/post_map_recipe.png b/wrangles-docs/static/images/map/post_map_recipe.png similarity index 100% rename from my-docs-site/static/images/map/post_map_recipe.png rename to wrangles-docs/static/images/map/post_map_recipe.png diff --git a/my-docs-site/static/images/maptraining.png b/wrangles-docs/static/images/maptraining.png similarity index 100% rename from my-docs-site/static/images/maptraining.png rename to wrangles-docs/static/images/maptraining.png diff --git a/my-docs-site/static/images/merging-list-with-string/coalesce_output.png b/wrangles-docs/static/images/merging-list-with-string/coalesce_output.png similarity index 100% rename from my-docs-site/static/images/merging-list-with-string/coalesce_output.png rename to wrangles-docs/static/images/merging-list-with-string/coalesce_output.png diff --git a/my-docs-site/static/images/merging-list-with-string/concatenate_output.png b/wrangles-docs/static/images/merging-list-with-string/concatenate_output.png similarity index 100% rename from my-docs-site/static/images/merging-list-with-string/concatenate_output.png rename to wrangles-docs/static/images/merging-list-with-string/concatenate_output.png diff --git a/my-docs-site/static/images/merging-list-with-string/extract_brands_training.png b/wrangles-docs/static/images/merging-list-with-string/extract_brands_training.png similarity index 100% rename from my-docs-site/static/images/merging-list-with-string/extract_brands_training.png rename to wrangles-docs/static/images/merging-list-with-string/extract_brands_training.png diff --git a/my-docs-site/static/images/merging-list-with-string/final_output.png b/wrangles-docs/static/images/merging-list-with-string/final_output.png similarity index 100% rename from my-docs-site/static/images/merging-list-with-string/final_output.png rename to wrangles-docs/static/images/merging-list-with-string/final_output.png diff --git a/my-docs-site/static/images/merging-list-with-string/output1.png b/wrangles-docs/static/images/merging-list-with-string/output1.png similarity index 100% rename from my-docs-site/static/images/merging-list-with-string/output1.png rename to wrangles-docs/static/images/merging-list-with-string/output1.png diff --git a/my-docs-site/static/images/multiple-row-standardize-sample.png b/wrangles-docs/static/images/multiple-row-standardize-sample.png similarity index 100% rename from my-docs-site/static/images/multiple-row-standardize-sample.png rename to wrangles-docs/static/images/multiple-row-standardize-sample.png diff --git a/my-docs-site/static/images/mywrangles.png b/wrangles-docs/static/images/mywrangles.png similarity index 100% rename from my-docs-site/static/images/mywrangles.png rename to wrangles-docs/static/images/mywrangles.png diff --git a/my-docs-site/static/images/mywranglesmap.png b/wrangles-docs/static/images/mywranglesmap.png similarity index 100% rename from my-docs-site/static/images/mywranglesmap.png rename to wrangles-docs/static/images/mywranglesmap.png diff --git a/my-docs-site/static/images/org_sharing.png b/wrangles-docs/static/images/org_sharing.png similarity index 100% rename from my-docs-site/static/images/org_sharing.png rename to wrangles-docs/static/images/org_sharing.png diff --git a/my-docs-site/static/images/part_number_zeros.png b/wrangles-docs/static/images/part_number_zeros.png similarity index 100% rename from my-docs-site/static/images/part_number_zeros.png rename to wrangles-docs/static/images/part_number_zeros.png diff --git a/my-docs-site/static/images/price_regex.png b/wrangles-docs/static/images/price_regex.png similarity index 100% rename from my-docs-site/static/images/price_regex.png rename to wrangles-docs/static/images/price_regex.png diff --git a/my-docs-site/static/images/price_regex_broken.png b/wrangles-docs/static/images/price_regex_broken.png similarity index 100% rename from my-docs-site/static/images/price_regex_broken.png rename to wrangles-docs/static/images/price_regex_broken.png diff --git a/my-docs-site/static/images/price_regex_fixed.png b/wrangles-docs/static/images/price_regex_fixed.png similarity index 100% rename from my-docs-site/static/images/price_regex_fixed.png rename to wrangles-docs/static/images/price_regex_fixed.png diff --git a/my-docs-site/static/images/product_type.png b/wrangles-docs/static/images/product_type.png similarity index 100% rename from my-docs-site/static/images/product_type.png rename to wrangles-docs/static/images/product_type.png diff --git a/my-docs-site/static/images/product_type_output.png b/wrangles-docs/static/images/product_type_output.png similarity index 100% rename from my-docs-site/static/images/product_type_output.png rename to wrangles-docs/static/images/product_type_output.png diff --git a/my-docs-site/static/images/properties-materials.png b/wrangles-docs/static/images/properties-materials.png similarity index 100% rename from my-docs-site/static/images/properties-materials.png rename to wrangles-docs/static/images/properties-materials.png diff --git a/my-docs-site/static/images/properties_output.png b/wrangles-docs/static/images/properties_output.png similarity index 100% rename from my-docs-site/static/images/properties_output.png rename to wrangles-docs/static/images/properties_output.png diff --git a/my-docs-site/static/images/python-install.png b/wrangles-docs/static/images/python-install.png similarity index 100% rename from my-docs-site/static/images/python-install.png rename to wrangles-docs/static/images/python-install.png diff --git a/my-docs-site/static/images/releases/2.1.0_play_button.png b/wrangles-docs/static/images/releases/2.1.0_play_button.png similarity index 100% rename from my-docs-site/static/images/releases/2.1.0_play_button.png rename to wrangles-docs/static/images/releases/2.1.0_play_button.png diff --git a/my-docs-site/static/images/releases/release1.8.0-1.png b/wrangles-docs/static/images/releases/release1.8.0-1.png similarity index 100% rename from my-docs-site/static/images/releases/release1.8.0-1.png rename to wrangles-docs/static/images/releases/release1.8.0-1.png diff --git a/my-docs-site/static/images/releases/release1.9.0-1.png b/wrangles-docs/static/images/releases/release1.9.0-1.png similarity index 100% rename from my-docs-site/static/images/releases/release1.9.0-1.png rename to wrangles-docs/static/images/releases/release1.9.0-1.png diff --git a/my-docs-site/static/images/releases/release1.9.0-2.png b/wrangles-docs/static/images/releases/release1.9.0-2.png similarity index 100% rename from my-docs-site/static/images/releases/release1.9.0-2.png rename to wrangles-docs/static/images/releases/release1.9.0-2.png diff --git a/my-docs-site/static/images/releases/release2.0.0-1.png b/wrangles-docs/static/images/releases/release2.0.0-1.png similarity index 100% rename from my-docs-site/static/images/releases/release2.0.0-1.png rename to wrangles-docs/static/images/releases/release2.0.0-1.png diff --git a/my-docs-site/static/images/releases/release2.0.0-2.png b/wrangles-docs/static/images/releases/release2.0.0-2.png similarity index 100% rename from my-docs-site/static/images/releases/release2.0.0-2.png rename to wrangles-docs/static/images/releases/release2.0.0-2.png diff --git a/my-docs-site/static/images/releases/single_multiple_dropdown.png b/wrangles-docs/static/images/releases/single_multiple_dropdown.png similarity index 100% rename from my-docs-site/static/images/releases/single_multiple_dropdown.png rename to wrangles-docs/static/images/releases/single_multiple_dropdown.png diff --git a/my-docs-site/static/images/releases/xl2.4.0/batch_size_setting.png b/wrangles-docs/static/images/releases/xl2.4.0/batch_size_setting.png similarity index 100% rename from my-docs-site/static/images/releases/xl2.4.0/batch_size_setting.png rename to wrangles-docs/static/images/releases/xl2.4.0/batch_size_setting.png diff --git a/my-docs-site/static/images/releases/xl2.4.0/extract_pattern_ai.png b/wrangles-docs/static/images/releases/xl2.4.0/extract_pattern_ai.png similarity index 100% rename from my-docs-site/static/images/releases/xl2.4.0/extract_pattern_ai.png rename to wrangles-docs/static/images/releases/xl2.4.0/extract_pattern_ai.png diff --git a/my-docs-site/static/images/releases/xl2.4.0/hide_option.png b/wrangles-docs/static/images/releases/xl2.4.0/hide_option.png similarity index 100% rename from my-docs-site/static/images/releases/xl2.4.0/hide_option.png rename to wrangles-docs/static/images/releases/xl2.4.0/hide_option.png diff --git a/my-docs-site/static/images/releases/xl2.4.0/marvin.png b/wrangles-docs/static/images/releases/xl2.4.0/marvin.png similarity index 100% rename from my-docs-site/static/images/releases/xl2.4.0/marvin.png rename to wrangles-docs/static/images/releases/xl2.4.0/marvin.png diff --git a/my-docs-site/static/images/releases/xl2.4.0/purpose_search.png b/wrangles-docs/static/images/releases/xl2.4.0/purpose_search.png similarity index 100% rename from my-docs-site/static/images/releases/xl2.4.0/purpose_search.png rename to wrangles-docs/static/images/releases/xl2.4.0/purpose_search.png diff --git a/my-docs-site/static/images/releases/xl2_5_0/extractsettings.png b/wrangles-docs/static/images/releases/xl2_5_0/extractsettings.png similarity index 100% rename from my-docs-site/static/images/releases/xl2_5_0/extractsettings.png rename to wrangles-docs/static/images/releases/xl2_5_0/extractsettings.png diff --git a/my-docs-site/static/images/releases/xl2_5_0/extractsettingsbutton.png b/wrangles-docs/static/images/releases/xl2_5_0/extractsettingsbutton.png similarity index 100% rename from my-docs-site/static/images/releases/xl2_5_0/extractsettingsbutton.png rename to wrangles-docs/static/images/releases/xl2_5_0/extractsettingsbutton.png diff --git a/my-docs-site/static/images/releases/xl_2_3_0/303102082-ff7b20fd-b395-43f0-aaeb-24f30452a321.png b/wrangles-docs/static/images/releases/xl_2_3_0/303102082-ff7b20fd-b395-43f0-aaeb-24f30452a321.png similarity index 100% rename from my-docs-site/static/images/releases/xl_2_3_0/303102082-ff7b20fd-b395-43f0-aaeb-24f30452a321.png rename to wrangles-docs/static/images/releases/xl_2_3_0/303102082-ff7b20fd-b395-43f0-aaeb-24f30452a321.png diff --git a/my-docs-site/static/images/releases/xl_2_3_0/context_menu_functions.gif b/wrangles-docs/static/images/releases/xl_2_3_0/context_menu_functions.gif similarity index 100% rename from my-docs-site/static/images/releases/xl_2_3_0/context_menu_functions.gif rename to wrangles-docs/static/images/releases/xl_2_3_0/context_menu_functions.gif diff --git a/my-docs-site/static/images/releases/xl_2_3_0/context_menu_secrets.gif b/wrangles-docs/static/images/releases/xl_2_3_0/context_menu_secrets.gif similarity index 100% rename from my-docs-site/static/images/releases/xl_2_3_0/context_menu_secrets.gif rename to wrangles-docs/static/images/releases/xl_2_3_0/context_menu_secrets.gif diff --git a/my-docs-site/static/images/releases/xl_2_3_0/model_id_1.gif b/wrangles-docs/static/images/releases/xl_2_3_0/model_id_1.gif similarity index 100% rename from my-docs-site/static/images/releases/xl_2_3_0/model_id_1.gif rename to wrangles-docs/static/images/releases/xl_2_3_0/model_id_1.gif diff --git a/my-docs-site/static/images/releases/xl_2_3_0/model_id_2.png b/wrangles-docs/static/images/releases/xl_2_3_0/model_id_2.png similarity index 100% rename from my-docs-site/static/images/releases/xl_2_3_0/model_id_2.png rename to wrangles-docs/static/images/releases/xl_2_3_0/model_id_2.png diff --git a/my-docs-site/static/images/releases/xl_2_3_0/model_id_3.png b/wrangles-docs/static/images/releases/xl_2_3_0/model_id_3.png similarity index 100% rename from my-docs-site/static/images/releases/xl_2_3_0/model_id_3.png rename to wrangles-docs/static/images/releases/xl_2_3_0/model_id_3.png diff --git a/my-docs-site/static/images/remove-words/description_with_url.png b/wrangles-docs/static/images/remove-words/description_with_url.png similarity index 100% rename from my-docs-site/static/images/remove-words/description_with_url.png rename to wrangles-docs/static/images/remove-words/description_with_url.png diff --git a/my-docs-site/static/images/remove-words/extract_training_data.png b/wrangles-docs/static/images/remove-words/extract_training_data.png similarity index 100% rename from my-docs-site/static/images/remove-words/extract_training_data.png rename to wrangles-docs/static/images/remove-words/extract_training_data.png diff --git a/my-docs-site/static/images/remove-words/original_data.png b/wrangles-docs/static/images/remove-words/original_data.png similarity index 100% rename from my-docs-site/static/images/remove-words/original_data.png rename to wrangles-docs/static/images/remove-words/original_data.png diff --git a/my-docs-site/static/images/remove-words/standardize_training_data.png b/wrangles-docs/static/images/remove-words/standardize_training_data.png similarity index 100% rename from my-docs-site/static/images/remove-words/standardize_training_data.png rename to wrangles-docs/static/images/remove-words/standardize_training_data.png diff --git a/my-docs-site/static/images/remove-words/url_list_desc_no_url.png b/wrangles-docs/static/images/remove-words/url_list_desc_no_url.png similarity index 100% rename from my-docs-site/static/images/remove-words/url_list_desc_no_url.png rename to wrangles-docs/static/images/remove-words/url_list_desc_no_url.png diff --git a/my-docs-site/static/images/remove-words/url_string_desc_no_url.png b/wrangles-docs/static/images/remove-words/url_string_desc_no_url.png similarity index 100% rename from my-docs-site/static/images/remove-words/url_string_desc_no_url.png rename to wrangles-docs/static/images/remove-words/url_string_desc_no_url.png diff --git a/my-docs-site/static/images/same-row-standardize-sample.png b/wrangles-docs/static/images/same-row-standardize-sample.png similarity index 100% rename from my-docs-site/static/images/same-row-standardize-sample.png rename to wrangles-docs/static/images/same-row-standardize-sample.png diff --git a/my-docs-site/static/images/secrets.png b/wrangles-docs/static/images/secrets.png similarity index 100% rename from my-docs-site/static/images/secrets.png rename to wrangles-docs/static/images/secrets.png diff --git a/my-docs-site/static/images/spaces.gif b/wrangles-docs/static/images/spaces.gif similarity index 100% rename from my-docs-site/static/images/spaces.gif rename to wrangles-docs/static/images/spaces.gif diff --git a/my-docs-site/static/images/stock-extract/extract.png b/wrangles-docs/static/images/stock-extract/extract.png similarity index 100% rename from my-docs-site/static/images/stock-extract/extract.png rename to wrangles-docs/static/images/stock-extract/extract.png diff --git a/my-docs-site/static/images/stock-extract/sql.gif b/wrangles-docs/static/images/stock-extract/sql.gif similarity index 100% rename from my-docs-site/static/images/stock-extract/sql.gif rename to wrangles-docs/static/images/stock-extract/sql.gif diff --git a/my-docs-site/static/images/train_extract.png b/wrangles-docs/static/images/train_extract.png similarity index 100% rename from my-docs-site/static/images/train_extract.png rename to wrangles-docs/static/images/train_extract.png diff --git a/my-docs-site/static/images/train_standardize.png b/wrangles-docs/static/images/train_standardize.png similarity index 100% rename from my-docs-site/static/images/train_standardize.png rename to wrangles-docs/static/images/train_standardize.png diff --git a/my-docs-site/static/images/vscode-recipe-validation-demo.png b/wrangles-docs/static/images/vscode-recipe-validation-demo.png similarity index 100% rename from my-docs-site/static/images/vscode-recipe-validation-demo.png rename to wrangles-docs/static/images/vscode-recipe-validation-demo.png diff --git a/my-docs-site/static/images/vscode-yaml-schema.png b/wrangles-docs/static/images/vscode-yaml-schema.png similarity index 100% rename from my-docs-site/static/images/vscode-yaml-schema.png rename to wrangles-docs/static/images/vscode-yaml-schema.png diff --git a/my-docs-site/static/images/wrangles_xl/run_in_edit.png b/wrangles-docs/static/images/wrangles_xl/run_in_edit.png similarity index 100% rename from my-docs-site/static/images/wrangles_xl/run_in_edit.png rename to wrangles-docs/static/images/wrangles_xl/run_in_edit.png diff --git a/my-docs-site/static/images/wrangles_xl/system_variables.png b/wrangles-docs/static/images/wrangles_xl/system_variables.png similarity index 100% rename from my-docs-site/static/images/wrangles_xl/system_variables.png rename to wrangles-docs/static/images/wrangles_xl/system_variables.png diff --git a/my-docs-site/static/images/wranglesxl-v2-9-0/creating_a_recipe.gif b/wrangles-docs/static/images/wranglesxl-v2-9-0/creating_a_recipe.gif similarity index 100% rename from my-docs-site/static/images/wranglesxl-v2-9-0/creating_a_recipe.gif rename to wrangles-docs/static/images/wranglesxl-v2-9-0/creating_a_recipe.gif diff --git a/my-docs-site/static/images/wranglesxl-v2-9-0/edit.png b/wrangles-docs/static/images/wranglesxl-v2-9-0/edit.png similarity index 100% rename from my-docs-site/static/images/wranglesxl-v2-9-0/edit.png rename to wrangles-docs/static/images/wranglesxl-v2-9-0/edit.png diff --git a/my-docs-site/static/images/wranglesxl-v2-9-0/extract_ai.png b/wrangles-docs/static/images/wranglesxl-v2-9-0/extract_ai.png similarity index 100% rename from my-docs-site/static/images/wranglesxl-v2-9-0/extract_ai.png rename to wrangles-docs/static/images/wranglesxl-v2-9-0/extract_ai.png diff --git a/my-docs-site/static/images/wranglesxl-v2-9-0/extract_settings.png b/wrangles-docs/static/images/wranglesxl-v2-9-0/extract_settings.png similarity index 100% rename from my-docs-site/static/images/wranglesxl-v2-9-0/extract_settings.png rename to wrangles-docs/static/images/wranglesxl-v2-9-0/extract_settings.png diff --git a/my-docs-site/static/images/wranglesxl-v2-9-0/search_filters.png b/wrangles-docs/static/images/wranglesxl-v2-9-0/search_filters.png similarity index 100% rename from my-docs-site/static/images/wranglesxl-v2-9-0/search_filters.png rename to wrangles-docs/static/images/wranglesxl-v2-9-0/search_filters.png diff --git a/my-docs-site/static/images/wranglesxl-v2-9-0/semantic_lookup_1_result.gif b/wrangles-docs/static/images/wranglesxl-v2-9-0/semantic_lookup_1_result.gif similarity index 100% rename from my-docs-site/static/images/wranglesxl-v2-9-0/semantic_lookup_1_result.gif rename to wrangles-docs/static/images/wranglesxl-v2-9-0/semantic_lookup_1_result.gif diff --git a/my-docs-site/static/images/wranglesxl-v2-9-0/semantic_lookup_3_results.gif b/wrangles-docs/static/images/wranglesxl-v2-9-0/semantic_lookup_3_results.gif similarity index 100% rename from my-docs-site/static/images/wranglesxl-v2-9-0/semantic_lookup_3_results.gif rename to wrangles-docs/static/images/wranglesxl-v2-9-0/semantic_lookup_3_results.gif diff --git a/my-docs-site/static/images/wranglesxl-v2-9-0/suggested_permissions.png b/wrangles-docs/static/images/wranglesxl-v2-9-0/suggested_permissions.png similarity index 100% rename from my-docs-site/static/images/wranglesxl-v2-9-0/suggested_permissions.png rename to wrangles-docs/static/images/wranglesxl-v2-9-0/suggested_permissions.png diff --git a/my-docs-site/static/images/wranglesxl-v2-9-0/tags_and_notes.gif b/wrangles-docs/static/images/wranglesxl-v2-9-0/tags_and_notes.gif similarity index 100% rename from my-docs-site/static/images/wranglesxl-v2-9-0/tags_and_notes.gif rename to wrangles-docs/static/images/wranglesxl-v2-9-0/tags_and_notes.gif diff --git a/my-docs-site/static/images/wranglesxl-v2-9-0/tool_tip.png b/wrangles-docs/static/images/wranglesxl-v2-9-0/tool_tip.png similarity index 100% rename from my-docs-site/static/images/wranglesxl-v2-9-0/tool_tip.png rename to wrangles-docs/static/images/wranglesxl-v2-9-0/tool_tip.png diff --git a/my-docs-site/static/images/wranglesxl-v2-9-0/train_lookup.gif b/wrangles-docs/static/images/wranglesxl-v2-9-0/train_lookup.gif similarity index 100% rename from my-docs-site/static/images/wranglesxl-v2-9-0/train_lookup.gif rename to wrangles-docs/static/images/wranglesxl-v2-9-0/train_lookup.gif diff --git a/my-docs-site/static/images/wranglesxl-v2-9-0/variables.gif b/wrangles-docs/static/images/wranglesxl-v2-9-0/variables.gif similarity index 100% rename from my-docs-site/static/images/wranglesxl-v2-9-0/variables.gif rename to wrangles-docs/static/images/wranglesxl-v2-9-0/variables.gif diff --git a/my-docs-site/static/images/wranglesxl-v2-9-0/versions.gif b/wrangles-docs/static/images/wranglesxl-v2-9-0/versions.gif similarity index 100% rename from my-docs-site/static/images/wranglesxl-v2-9-0/versions.gif rename to wrangles-docs/static/images/wranglesxl-v2-9-0/versions.gif diff --git a/my-docs-site/static/images/yaml-extension-vscode.png b/wrangles-docs/static/images/yaml-extension-vscode.png similarity index 100% rename from my-docs-site/static/images/yaml-extension-vscode.png rename to wrangles-docs/static/images/yaml-extension-vscode.png diff --git a/my-docs-site/static/img/favicon.ico b/wrangles-docs/static/img/favicon.ico similarity index 100% rename from my-docs-site/static/img/favicon.ico rename to wrangles-docs/static/img/favicon.ico diff --git a/my-docs-site/static/img/logo.svg b/wrangles-docs/static/img/logo.svg similarity index 100% rename from my-docs-site/static/img/logo.svg rename to wrangles-docs/static/img/logo.svg diff --git a/my-docs-site/static/in-depth-examples/3_country_name_wrangle_standardize.png b/wrangles-docs/static/in-depth-examples/3_country_name_wrangle_standardize.png similarity index 100% rename from my-docs-site/static/in-depth-examples/3_country_name_wrangle_standardize.png rename to wrangles-docs/static/in-depth-examples/3_country_name_wrangle_standardize.png diff --git a/my-docs-site/static/in-depth-examples/alpha_3_countries_output.png b/wrangles-docs/static/in-depth-examples/alpha_3_countries_output.png similarity index 100% rename from my-docs-site/static/in-depth-examples/alpha_3_countries_output.png rename to wrangles-docs/static/in-depth-examples/alpha_3_countries_output.png diff --git a/my-docs-site/static/in-depth-examples/country_3_letter_abbreviaiton_standardize.png b/wrangles-docs/static/in-depth-examples/country_3_letter_abbreviaiton_standardize.png similarity index 100% rename from my-docs-site/static/in-depth-examples/country_3_letter_abbreviaiton_standardize.png rename to wrangles-docs/static/in-depth-examples/country_3_letter_abbreviaiton_standardize.png diff --git a/my-docs-site/static/in-depth-examples/data_wrangles_window_pupup.png b/wrangles-docs/static/in-depth-examples/data_wrangles_window_pupup.png similarity index 100% rename from my-docs-site/static/in-depth-examples/data_wrangles_window_pupup.png rename to wrangles-docs/static/in-depth-examples/data_wrangles_window_pupup.png diff --git a/my-docs-site/static/in-depth-examples/excel_setting.png b/wrangles-docs/static/in-depth-examples/excel_setting.png similarity index 100% rename from my-docs-site/static/in-depth-examples/excel_setting.png rename to wrangles-docs/static/in-depth-examples/excel_setting.png diff --git a/my-docs-site/static/in-depth-examples/extract_data_final.png b/wrangles-docs/static/in-depth-examples/extract_data_final.png similarity index 100% rename from my-docs-site/static/in-depth-examples/extract_data_final.png rename to wrangles-docs/static/in-depth-examples/extract_data_final.png diff --git a/my-docs-site/static/in-depth-examples/materials_output.png b/wrangles-docs/static/in-depth-examples/materials_output.png similarity index 100% rename from my-docs-site/static/in-depth-examples/materials_output.png rename to wrangles-docs/static/in-depth-examples/materials_output.png diff --git a/my-docs-site/static/in-depth-examples/properties_materials.png b/wrangles-docs/static/in-depth-examples/properties_materials.png similarity index 100% rename from my-docs-site/static/in-depth-examples/properties_materials.png rename to wrangles-docs/static/in-depth-examples/properties_materials.png diff --git a/my-docs-site/static/in-depth-examples/remove-words/demo_brands.png b/wrangles-docs/static/in-depth-examples/remove-words/demo_brands.png similarity index 100% rename from my-docs-site/static/in-depth-examples/remove-words/demo_brands.png rename to wrangles-docs/static/in-depth-examples/remove-words/demo_brands.png diff --git a/my-docs-site/static/in-depth-examples/remove-words/recipe_step1.png b/wrangles-docs/static/in-depth-examples/remove-words/recipe_step1.png similarity index 100% rename from my-docs-site/static/in-depth-examples/remove-words/recipe_step1.png rename to wrangles-docs/static/in-depth-examples/remove-words/recipe_step1.png diff --git a/my-docs-site/static/in-depth-examples/remove-words/recipe_step2.png b/wrangles-docs/static/in-depth-examples/remove-words/recipe_step2.png similarity index 100% rename from my-docs-site/static/in-depth-examples/remove-words/recipe_step2.png rename to wrangles-docs/static/in-depth-examples/remove-words/recipe_step2.png diff --git a/my-docs-site/static/in-depth-examples/remove-words/recipe_step3.png b/wrangles-docs/static/in-depth-examples/remove-words/recipe_step3.png similarity index 100% rename from my-docs-site/static/in-depth-examples/remove-words/recipe_step3.png rename to wrangles-docs/static/in-depth-examples/remove-words/recipe_step3.png diff --git a/my-docs-site/static/in-depth-examples/remove-words/remove_words_data.png b/wrangles-docs/static/in-depth-examples/remove-words/remove_words_data.png similarity index 100% rename from my-docs-site/static/in-depth-examples/remove-words/remove_words_data.png rename to wrangles-docs/static/in-depth-examples/remove-words/remove_words_data.png diff --git a/my-docs-site/static/in-depth-examples/remove-words/stock_replace.gif b/wrangles-docs/static/in-depth-examples/remove-words/stock_replace.gif similarity index 100% rename from my-docs-site/static/in-depth-examples/remove-words/stock_replace.gif rename to wrangles-docs/static/in-depth-examples/remove-words/stock_replace.gif diff --git a/my-docs-site/static/in-depth-examples/standardize_window.png b/wrangles-docs/static/in-depth-examples/standardize_window.png similarity index 100% rename from my-docs-site/static/in-depth-examples/standardize_window.png rename to wrangles-docs/static/in-depth-examples/standardize_window.png diff --git a/my-docs-site/static/in-depth-examples/tool_menu_2022_6_23.png b/wrangles-docs/static/in-depth-examples/tool_menu_2022_6_23.png similarity index 100% rename from my-docs-site/static/in-depth-examples/tool_menu_2022_6_23.png rename to wrangles-docs/static/in-depth-examples/tool_menu_2022_6_23.png diff --git a/my-docs-site/static/in-depth-examples/tool_menu_2022_6_23_extract.png b/wrangles-docs/static/in-depth-examples/tool_menu_2022_6_23_extract.png similarity index 100% rename from my-docs-site/static/in-depth-examples/tool_menu_2022_6_23_extract.png rename to wrangles-docs/static/in-depth-examples/tool_menu_2022_6_23_extract.png diff --git a/my-docs-site/static/in-depth-examples/use_labels_example.gif b/wrangles-docs/static/in-depth-examples/use_labels_example.gif similarity index 100% rename from my-docs-site/static/in-depth-examples/use_labels_example.gif rename to wrangles-docs/static/in-depth-examples/use_labels_example.gif diff --git a/my-docs-site/static/install/desktop-ribbon.png b/wrangles-docs/static/install/desktop-ribbon.png similarity index 100% rename from my-docs-site/static/install/desktop-ribbon.png rename to wrangles-docs/static/install/desktop-ribbon.png diff --git a/my-docs-site/static/install/desktop-store.png b/wrangles-docs/static/install/desktop-store.png similarity index 100% rename from my-docs-site/static/install/desktop-store.png rename to wrangles-docs/static/install/desktop-store.png diff --git a/wrangles-docs/static/registry/contracts/accordion.json b/wrangles-docs/static/registry/contracts/accordion.json new file mode 100644 index 0000000..09eeea6 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/accordion.json @@ -0,0 +1,136 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": null, + "wrangle_name": "accordion", + "namespace": null, + "wrangle_key": "accordion", + "aliases": [], + "slug": "accordion", + "title": "Accordion", + "description": "Apply a series of wrangles to column(s) containing lists. The wrangles will be applied to each element in the list and the results will be returned back as a list.", + "status": "active", + "visibility": "public", + "tags": [ + "utility", + "accordion" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.main.accordion", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "wrangles", + "description": "List of wrangles to apply.", + "required": true, + "role": "nested-wrangles", + "schema": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/$defs/wrangles/items" + } + } + }, + { + "name": "input", + "description": "The column(s) containing the list(s) that the wrangles will be applied to the elements of.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "output", + "description": "Output of the wrangles to save back to the dataframe.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "propagate", + "description": "Limit the column(s) that will be available to the wrangles and replicated for each element. If not specified, all columns will be propogated. This may be useful to limit the memory use for large datasets.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Apply a series of wrangles to the individual elements of one or more lists.\n\n## Migrated examples\n#### Apply Convert Case to List Elements\n\nThis example applies `convert.case` to each string in a list, where the wrangle would not normally operate on the list as a whole.\n\n##### Recipe\n\n```yaml\nwrangles:\n - accordion:\n input: list_column\n output: modified_lists\n wrangles:\n - convert.case:\n input: list_column\n output: modified_lists\n case: upper\n```\n\n
\n\n
\n\n##### Input Sample\n\n| list_column |\n| --- |\n| [\"a\", \"b\", \"c\"] |\n| [\"e\", \"f\", \"g\"] |\n\n
\n\n
\n\n##### Output Sample\n\n| list_column | modified_lists |\n| --- | --- |\n| [\"a\", \"b\", \"c\"] | [\"A\", \"B\", \"C\"] |\n| [\"e\", \"f\", \"g\"] | [\"E\", \"F\", \"G\"] |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py", + "title": "WranglesPY accordion implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/utility/_sources/accordion.md", + "title": "Existing accordion Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/batch.json b/wrangles-docs/static/registry/contracts/batch.json new file mode 100644 index 0000000..b3fdff6 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/batch.json @@ -0,0 +1,151 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": null, + "wrangle_name": "batch", + "namespace": null, + "wrangle_key": "batch", + "aliases": [], + "slug": "batch", + "title": "Batch", + "description": "Split the data into batches for executing a list of wrangles. Use this in situations such as where the intermediate data is too large to fit in memory.", + "status": "active", + "visibility": "public", + "tags": [ + "utility", + "batch" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.main.batch", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "wrangles", + "description": "The wrangles to execute on the data. Each series of wrangles will be run against the data in batches of the size defined by batch_size.", + "required": true, + "role": "nested-wrangles", + "schema": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/$defs/wrangles/items" + } + } + }, + { + "name": "batch_size", + "description": "The number of rows to split each batch into.", + "required": false, + "role": "option", + "runtime_default": 1000, + "schema": { + "type": "integer" + } + }, + { + "name": "threads", + "description": "The number of threads to use for parallel processing. Default 1.", + "required": false, + "role": "option", + "runtime_default": 1, + "schema": { + "type": "integer" + } + }, + { + "name": "on_error", + "description": "A dictionary of column_name: value to return if an error occurs while attempting to run a batch.", + "required": false, + "role": "fallback-value", + "runtime_default": null, + "schema": { + "type": [ + "object", + "null" + ] + } + }, + { + "name": "timeout", + "description": "The number of seconds to wait for a batch to complete before raising an error.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "number", + "null" + ] + } + }, + { + "name": "use_multiprocessing", + "description": "Use process-based workers instead of threads. This is an advanced runtime option.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Execute a series of wrangles in batches. Batches can run in parallel with `threads` and can provide fallback output when an error occurs.\n\n## Migrated examples\n#### Batch an Extract AI Wrangle\n\nThis example processes product descriptions in batches of two rows.\n\n##### Recipe\n\n```yaml\nwrangles:\n - batch:\n batch_size: 2\n threads: 1\n wrangles:\n - extract.ai:\n api_key: Your OpenAI API key\n input: Product Description\n output:\n Title:\n type: string\n description: Title of the product\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Product Description |\n| --- |\n| Sleep better with our Memory Foam Pillow, designed to contour to your head and neck. |\n| Stay comfortable and stylish with our Organic Cotton T-Shirt, made from soft, breathable fabric. |\n| Keep drinks hot or cold with our Stainless Steel Water Bottle, featuring durable insulation. |\n| Enjoy crisp sound and long battery life with our Wireless Bluetooth Earbuds. |\n\n
\n\n
\n\n##### Output Sample\n\n| Product Description | Title |\n| --- | --- |\n| Sleep better with our Memory Foam Pillow, designed to contour to your head and neck. | Memory Foam Pillow |\n| Stay comfortable and stylish with our Organic Cotton T-Shirt, made from soft, breathable fabric. | Organic Cotton T-Shirt |\n| Keep drinks hot or cold with our Stainless Steel Water Bottle, featuring durable insulation. | Stainless Steel Water Bottle |\n| Enjoy crisp sound and long battery life with our Wireless Bluetooth Earbuds. | Wireless Bluetooth Earbuds |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py", + "title": "WranglesPY batch implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/utility/_sources/batch.md", + "title": "Existing batch Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/classify.json b/wrangles-docs/static/registry/contracts/classify.json new file mode 100644 index 0000000..3ec0acf --- /dev/null +++ b/wrangles-docs/static/registry/contracts/classify.json @@ -0,0 +1,125 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "06669ef8-cdd1-42f7-8078-98e0b7a42c30", + "wrangle_name": "classify", + "namespace": null, + "wrangle_key": "classify", + "aliases": [], + "slug": "classify", + "title": "Classify", + "description": "Run classify wrangles on the specified columns. Requires WrangleWorks Account and Subscription.", + "status": "active", + "visibility": "public", + "tags": [ + "ai", + "classify" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.main.classify", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": true, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the input column.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "output", + "description": "Name of the output column.", + "required": true, + "role": "column-output", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "model_id", + "description": "ID of the classification model to be used.", + "required": true, + "role": "model-reference", + "schema": { + "type": "string" + } + }, + { + "name": "include_confidence", + "description": "For models that support it, include the confidence level in the output.", + "required": false, + "role": "option", + "schema": { + "type": "boolean" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Run a custom classification wrangle on the specified column or columns. A classification wrangle must be trained first.\n\n## Migrated examples\n#### Food Type Example\n\n##### Recipe\n\n```yaml\nwrangles:\n - classify:\n input: Products\n output: Category\n model_id: ${model_id}\n where: Products = Milk\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Products |\n| --- |\n| Rice |\n| Milk |\n\n
\n\n
\n\n##### Output Sample\n\n| Products | Category |\n| --- | --- |\n| Rice | |\n| Milk | Dairy |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py", + "title": "WranglesPY classify implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/ai/_sources/classify.md", + "title": "Existing classify Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/clean-whitespaces.json b/wrangles-docs/static/registry/contracts/clean-whitespaces.json new file mode 100644 index 0000000..7851366 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/clean-whitespaces.json @@ -0,0 +1,129 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "e36e15c4-f0ad-43f8-8555-ef683a8ab892", + "wrangle_name": "clean_whitespaces", + "namespace": null, + "wrangle_key": "clean_whitespaces", + "aliases": [], + "slug": "clean-whitespaces", + "title": "Clean Whitespaces", + "description": "Condense multiple spaces to a single space and convert special space characters to a standard space.", + "status": "active", + "visibility": "public", + "tags": [ + "format", + "clean-whitespaces" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.main.clean_whitespaces", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name or list of input columns.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "output", + "description": "Name or list of output columns.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "trim", + "description": "Whether to trim leading and trailing spaces. Default True.", + "required": false, + "role": "option", + "runtime_default": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove_literals", + "description": "Whether to remove special space characters such as new lines etc. Default True.", + "required": false, + "role": "option", + "runtime_default": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Condense multiple spaces to a single space and convert special space characters to a standard space.\n\n## Migrated examples\n#### Food Type Example\n\n##### Recipe\n\n```yaml\nwrangles:\n - clean_whitespaces:\n input: Products\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Products |\n| --- |\n| `Hello world!` |\n| `Hello universe!` |\n\n
\n\n
\n\n##### Output Sample\n\n| Products |\n| --- |\n| Hello world! |\n| Hello universe! |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py", + "title": "WranglesPY clean_whitespaces implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/clean-whitespaces.md", + "title": "Existing clean_whitespaces Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/compare/lists.json b/wrangles-docs/static/registry/contracts/compare/lists.json new file mode 100644 index 0000000..2a2bace --- /dev/null +++ b/wrangles-docs/static/registry/contracts/compare/lists.json @@ -0,0 +1,135 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "a393225e-7ccf-4708-83f8-d5abd6ba9b1e", + "wrangle_name": "lists", + "namespace": "compare", + "wrangle_key": "compare.lists", + "aliases": [], + "slug": "compare/lists", + "title": "Lists", + "description": "Compare multiple lists and return the intersection, difference, or union.", + "status": "active", + "visibility": "public", + "tags": [ + "compare", + "lists" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.compare.lists", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "List of input columns containing lists to compare.", + "required": true, + "role": "column-selector", + "schema": { + "type": "array" + } + }, + { + "name": "output", + "description": "Name of the output column.", + "required": true, + "role": "column-output", + "schema": { + "type": "string" + } + }, + { + "name": "method", + "description": "Type of comparison to perform.", + "required": false, + "role": "option", + "runtime_default": "intersection", + "schema": { + "type": "string", + "enum": [ + "intersection", + "difference", + "union" + ] + } + }, + { + "name": "remove_duplicates", + "description": "Remove duplicates from the result.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "ignore_case", + "description": "Ignore case when comparing string items.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Compare multiple lists and return the intersection, difference, or union.\n\n## Migrated examples\n#### Comparing the difference between two columns of lists\n\n##### Recipe\n\n```yaml\nwrangles:\n - compare.lists:\n input:\n - col1\n - col2\n output: Difference\n method: difference\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Col1 | Col2 |\n| --- | --- |\n| [A, B, C] | [C, D, E] |\n| [H, I, J, K] | [H, I, J] |\n| [X, Y, Z] | [1, 2, 3] |\n\n
\n\n
\n\n##### Output Sample\n\n| Difference |\n| --- |\n| [A, B] |\n| [K] |\n| [X, Y, Z] |\n\n
\n\n
\n\n#### Comparing the intersection between two columns of lists\n\n##### Recipe\n\n```yaml\nwrangles:\n - compare.lists:\n input:\n - col1\n - col2\n output: Intersection\n method: intersection\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Col1 | Col2 |\n| --- | --- |\n| [A, B, C] | [C, D, E] |\n| [H, I, J, K] | [H, I, J] |\n| [X, Y, Z] | [1, 2, 3] |\n\n
\n\n
\n\n##### Output Sample\n\n| Intersection |\n| --- |\n| [C] |\n| [H, I, J] |\n| [] |\n\n
\n\n
\n\n#### Comparing the union between two columns of lists\n\n##### Recipe\n\n```yaml\nwrangles:\n - compare.lists:\n input:\n - col1\n - col2\n output: Union\n method: union\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Col1 | Col2 |\n| --- | --- |\n| [A, B, C] | [C, D, E] |\n| [H, I, J, K] | [H, I, J] |\n| [X, Y, Z] | [1, 2, 3] |\n\n
\n\n
\n\n##### Output Sample\n\n| Union |\n| --- |\n| [A, B, C, D, E] |\n| [H, I, J, K] |\n| [X, Y, Z, 1, 2, 3] |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/compare.py", + "title": "WranglesPY compare.lists implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compare/_sources/lists.md", + "title": "Existing compare.lists Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/compare/text.json b/wrangles-docs/static/registry/contracts/compare/text.json new file mode 100644 index 0000000..e4649be --- /dev/null +++ b/wrangles-docs/static/registry/contracts/compare/text.json @@ -0,0 +1,231 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "31905b74-ce58-45cd-8add-821cc04ab946", + "wrangle_name": "text", + "namespace": "compare", + "wrangle_key": "compare.text", + "aliases": [], + "slug": "compare/text", + "title": "Text", + "description": "Compare two strings and return the intersection or difference, use overlap to find the matching characters between the two strings, or use similarity to get a numeric similarity score.", + "status": "active", + "visibility": "public", + "tags": [ + "compare", + "text" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.compare.text", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "The columns to compare. First column is the base column.", + "required": true, + "role": "column-selector", + "schema": { + "type": "array" + } + }, + { + "name": "output", + "description": "The column to output the results to. Must be a list of two column names [mask_column, ratio_column] when method is overlap and include_ratio is true; otherwise a single column name.", + "required": true, + "role": "column-output", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "method", + "description": "The type of comparison to perform (difference, intersection, overlap, similarity).", + "required": false, + "role": "option", + "runtime_default": "difference", + "schema": { + "type": "string", + "enum": [ + "difference", + "intersection", + "overlap", + "similarity" + ] + } + }, + { + "name": "char", + "description": "Character to split strings on for difference and intersection. Defaults to a space.", + "required": false, + "role": "option", + "runtime_default": " ", + "schema": { + "type": "string" + } + }, + { + "name": "non_match_char", + "description": "Character to use for non-matching characters when using overlap.", + "required": false, + "role": "option", + "runtime_default": "*", + "schema": { + "type": "string" + } + }, + { + "name": "include_ratio", + "description": "Include the ratio of matching characters when using overlap.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "decimal_places", + "description": "Number of decimal places to round the overlap ratio to.", + "required": false, + "role": "option", + "runtime_default": 3, + "schema": { + "type": "integer" + } + }, + { + "name": "exact_match", + "description": "Value to use for exact matches when using overlap.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "empty_a", + "description": "Value to use when input A is empty when using overlap.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "empty_b", + "description": "Value to use when input B is empty when using overlap.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "all_empty", + "description": "Value to use when both inputs are empty when using overlap.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "case_sensitive", + "description": "Whether the comparison is case sensitive. Defaults to true.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "metric", + "description": "Metric value accepted by the runtime.", + "required": false, + "role": "option", + "runtime_default": "token_sort", + "schema": { + "type": "string" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Compare two strings and return the intersection or difference, or use overlap to find the matching characters between the two strings.\n\n## Migrated examples\n#### Comparing the difference between two columns of text\n\n##### Recipe\n\n```yaml\nwrangles:\n - compare.text:\n input:\n - col1\n - col2\n output: Difference\n method: difference\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Col1 | Col2 |\n| --- | --- |\n| Large Oak Wood White Marble Top Bookshelf | Large Pine Wood Black Marble Bottom Bookshelf |\n| Medium Oak Wood White Marble Top Coffee Table | Medium Maple Wood Orange Steel Top Coffee Table |\n| Small Oak Wood White Marble Top Console Table | Small Normal Wood Blue Plastic Top Console Table |\n\n
\n\n
\n\n##### Output Sample\n\n| Difference |\n| --- |\n| Pine Black Bottom |\n| Maple Orange Steel |\n| Normal Blue Plastic |\n\n
\n\n
\n\n#### Comparing the intersection of two columns of text\n\n##### Recipe\n\n```yaml\nwrangles:\n - compare.text:\n input:\n - col1\n - col2\n output: Intersection\n method: intersection\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Col1 | Col2 |\n| --- | --- |\n| Large Oak Wood White Marble Top Bookshelf | Large Pine Wood Black Marble Bottom Bookshelf |\n| Medium Oak Wood White Marble Top Coffee Table | Medium Maple Wood Orange Steel Top Coffee Table |\n| Small Oak Wood White Marble Top Console Table | Small Normal Wood Blue Plastic Top Console Table |\n\n
\n\n
\n\n##### Output Sample\n\n| Intersection |\n| --- |\n| Large Wood Marble Bookshelf |\n| Medium Wood Top Coffee Table |\n| Small Wood Top Console Table |\n\n
\n\n
\n\n#### Comparing the overlap of two columns of text\n\n##### Recipe\n\n```yaml\nwrangles:\n - compare.text:\n input:\n - Part Code1\n - Part Code2\n output: Overlap\n method: overlap\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Part Code1 | Part Code2 |\n| --- | --- |\n| SKF6202 | TMKN6202 |\n| X06-02-000 | X06-81-000 |\n| 7100E15-V-230/3 | 7100E15-V-120/1 |\n\n
\n\n
\n\n##### Output Sample\n\n| Overlap |\n| --- |\n| ****6202 |\n| X06-**-000 |\n| 7100E15-V-\\**0/\\* |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/compare.py", + "title": "WranglesPY compare.text implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compare/_sources/text.md", + "title": "Existing compare.text Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/compute/case-when.json b/wrangles-docs/static/registry/contracts/compute/case-when.json new file mode 100644 index 0000000..0aed7e3 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/compute/case-when.json @@ -0,0 +1,137 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "9a9662e4-53d1-4932-8adf-bc3e7aa364ad", + "wrangle_name": "case_when", + "namespace": "compute", + "wrangle_key": "compute.case_when", + "aliases": [], + "slug": "compute/case-when", + "title": "Case When", + "description": "Assign values to a column based on conditional logic.", + "status": "active", + "visibility": "public", + "tags": [ + "compute", + "case-when" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.compute.case_when", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "output", + "description": "Name of the output column.", + "required": true, + "role": "column-output", + "schema": { + "type": "string" + } + }, + { + "name": "cases", + "description": "List of conditions and corresponding values.", + "required": true, + "role": "option", + "schema": { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "required": [ + "condition", + "value" + ], + "properties": { + "condition": { + "type": "string" + }, + "value": { + "type": [ + "string", + "number", + "integer", + "boolean" + ] + } + } + } + } + }, + { + "name": "default", + "description": "Value to assign if no conditions are met. Default None.", + "required": false, + "role": "fallback-value", + "runtime_default": null, + "schema": { + "type": [ + "string", + "number", + "integer", + "boolean", + "null" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Assign values to a column based on conditional logic.\n\n## Migrated examples\n#### Assigning Letter Grades\n\n##### Recipe\n\n```yaml\nwrangles:\n - compute.case_when:\n output: Letter Grade\n cases:\n - condition: Grade > 89\n value: 'A'\n - condition: 90 > Grade > 79\n value: 'B'\n - condition: 80 > Grade > 69\n value: 'C'\n - condition: 70 > Grade\n value: 'F'\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Student | Grade |\n| --- | --- |\n| Billy | 62 |\n| Sarah | 91 |\n| Timmy | 88 |\n| Tammy | 74 |\n\n
\n\n
\n\n##### Output Sample\n\n| Student | Grade | Letter Grade |\n| --- | --- | --- |\n| Billy | 62 | F |\n| Sarah | 91 | A |\n| Timmy | 88 | B |\n| Tammy | 74 | C |\n\n
\n\n
\n\n#### Assigning Letter Grades with Attendance\n\nConditions can be combined so multiple criteria must be met before assigning a value.\n\n##### Recipe\n\n```yaml\nwrangles:\n - compute.case_when:\n output: Letter Grade\n cases:\n - condition: (Grade > .89) & (Attendance == 'Good')\n value: 'A'\n - condition: (.90 > Grade > .79) & (Attendance == 'Good')\n value: 'B'\n - condition: (.80 > Grade > .69) & (Attendance == 'Good')\n value: 'C'\n - condition: (.70 > Grade) or (Attendance == 'Poor')\n value: 'F'\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Student | Grade | Attendance |\n| --- | --- | --- |\n| Billy | 62 | Poor |\n| Sarah | 91 | Poor |\n| Timmy | 88 | Good |\n| Tammy | 74 | Good |\n\n
\n\n
\n\n##### Output Sample\n\n| Student | Grade | Attendance | Letter Grade |\n| --- | --- | --- | --- |\n| Billy | 62 | Poor | F |\n| Sarah | 91 | Poor | F |\n| Timmy | 88 | Good | B |\n| Tammy | 74 | Good | C |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/compute.py", + "title": "WranglesPY compute.case_when implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compute/_sources/case-when.md", + "title": "Existing compute.case_when Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/compute/score-search-results.json b/wrangles-docs/static/registry/contracts/compute/score-search-results.json new file mode 100644 index 0000000..c82bb3f --- /dev/null +++ b/wrangles-docs/static/registry/contracts/compute/score-search-results.json @@ -0,0 +1,243 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "313a8ec0-cf13-4956-8d3b-5362b8641d0f", + "wrangle_name": "score_search_results", + "namespace": "compute", + "wrangle_key": "compute.score_search_results", + "aliases": [], + "slug": "compute/score-search-results", + "title": "Score Search Results", + "description": "Scores and filters search results based on progressive partial/exact matching. Can return dictionaries or a parallel list of formatted strings.", + "status": "active", + "visibility": "public", + "tags": [ + "compute", + "score-search-results" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.compute.score_search_results", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "List of 3 to 5 columns -> [results, suppliers, part_codes, mpns (optional), descriptions (optional)].", + "required": true, + "role": "column-selector", + "schema": { + "type": "array" + } + }, + { + "name": "output", + "description": "Output column for the dictionaries. If a list of 2 is provided, outputs [dicts_column, pretty_strings_column].", + "required": true, + "role": "column-output", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "must_match_part_code", + "description": "If true, filters out results that don't satisfy the allowed match types.", + "required": false, + "role": "option", + "runtime_default": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "allow_mpn_exact", + "description": "Treat exact MPN matches as valid part code matches.", + "required": false, + "role": "option", + "runtime_default": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "allow_mpn_partial", + "description": "Treat partial MPN matches as valid part code matches.", + "required": false, + "role": "option", + "runtime_default": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "allow_other_exact", + "description": "Treat exact other part code matches as valid part code matches.", + "required": false, + "role": "option", + "runtime_default": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "allow_other_partial", + "description": "Treat partial other part code matches as valid part code matches.", + "required": false, + "role": "option", + "runtime_default": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "blacklist_keywords", + "description": "Comma-separated list or array of keywords to filter out URLs containing them.", + "required": false, + "role": "option", + "runtime_default": "", + "schema": { + "type": "string" + } + }, + { + "name": "mpn_exact_score", + "description": "Mpn Exact Score value accepted by the runtime.", + "required": false, + "role": "option", + "runtime_default": 8, + "schema": { + "type": "number" + } + }, + { + "name": "mpn_partial_base", + "description": "Mpn Partial Base value accepted by the runtime.", + "required": false, + "role": "option", + "runtime_default": 4, + "schema": { + "type": "number" + } + }, + { + "name": "part_code_exact_score", + "description": "Part Code Exact Score value accepted by the runtime.", + "required": false, + "role": "option", + "runtime_default": 6, + "schema": { + "type": "number" + } + }, + { + "name": "part_code_partial_base", + "description": "Part Code Partial Base value accepted by the runtime.", + "required": false, + "role": "option", + "runtime_default": 2, + "schema": { + "type": "number" + } + }, + { + "name": "supplier_exact_score", + "description": "Supplier Exact Score value accepted by the runtime.", + "required": false, + "role": "option", + "runtime_default": 3, + "schema": { + "type": "number" + } + }, + { + "name": "supplier_partial_base", + "description": "Supplier Partial Base value accepted by the runtime.", + "required": false, + "role": "option", + "runtime_default": 1, + "schema": { + "type": "number" + } + }, + { + "name": "context_match_base", + "description": "Context Match Base value accepted by the runtime.", + "required": false, + "role": "option", + "runtime_default": 2, + "schema": { + "type": "number" + } + }, + { + "name": "fuzzy_match_threshold", + "description": "Fuzzy Match Threshold value accepted by the runtime.", + "required": false, + "role": "option", + "runtime_default": 0.8, + "schema": { + "type": "number" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Scores and filters search results based on progressive partial/exact matching. Can return dictionaries or a parallel list of formatted strings.\n\n## Migrated examples\n#### Rank Part Search Results\n\nThis template scores search results using supplier and part-code context. The fields added to each result dictionary depend on the scoring configuration.\n\n##### Recipe\n\n```yaml\nwrangles:\n - compute.score_search_results:\n input:\n - Search Results\n - Suppliers\n - Part Codes\n output:\n - Scored Results\n allow_other_exact: true\n must_match_part_code: true\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Search Results | Suppliers | Part Codes |\n| --- | --- | --- |\n| `[{\"title\": \"SKF 6202 bearing\", \"link\": \"https://example.com/6202\"}]` | `[\"SKF\"]` | `[\"6202\"]` |\n\n
\n\n
\n\n##### Output Sample\n\n| Search Results | Suppliers | Part Codes | Scored Results |\n| --- | --- | --- | --- |\n| `[{\"title\": \"SKF 6202 bearing\", \"link\": \"https://example.com/6202\"}]` | `[\"SKF\"]` | `[\"6202\"]` | Ranked result dictionaries |\n\n
\n\n
\n\n_Template based on the documented parameters; no published source example is currently available._", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/compute.py", + "title": "WranglesPY compute.score_search_results implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compute/_sources/score-search-results.md", + "title": "Existing compute.score_search_results Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/concurrent.json b/wrangles-docs/static/registry/contracts/concurrent.json new file mode 100644 index 0000000..f90371d --- /dev/null +++ b/wrangles-docs/static/registry/contracts/concurrent.json @@ -0,0 +1,116 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": null, + "wrangle_name": "concurrent", + "namespace": null, + "wrangle_key": "concurrent", + "aliases": [], + "slug": "concurrent", + "title": "Concurrent", + "description": "Run multiple wrangles concurrently rather than sequentially. Wrangles must specify output columns to be used concurrently. When using concurrent, Wrangles may not complete in a predictable order and it is not recommended to update overlapping columns with different wrangles.", + "status": "active", + "visibility": "public", + "tags": [ + "utility", + "concurrent" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.main.concurrent", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "wrangles", + "description": "The wrangles section of a recipe to execute for each combination of variables.", + "required": true, + "role": "nested-wrangles", + "schema": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/$defs/wrangles/items" + } + } + }, + { + "name": "max_concurrency", + "description": "The maximum number of wrangles to execute in parallel.", + "required": false, + "role": "option", + "runtime_default": 10, + "schema": { + "type": "integer", + "minimum": 1 + } + }, + { + "name": "use_multiprocessing", + "description": "Use process-based workers instead of threads. This is an advanced runtime option.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Run multiple wrangles concurrently instead of sequentially. Concurrent wrangles must declare output columns, may finish in any order, and should not update overlapping columns.\n\nSee the [Concurrent connector](/python/connectors/concurrent) for the connector equivalent.\n\n## Migrated examples\n#### Run Extraction Wrangles Concurrently\n\n##### Recipe\n\n```yaml\nwrangles:\n - concurrent:\n wrangles:\n - extract.codes:\n input: Products\n output: Part Codes\n - extract.attributes:\n input: Products\n output: Attributes\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Products |\n| --- |\n| SKF ball brg 2\" od 6202 |\n| brg seal 1\" id 5493 |\n| 3lb hammer 87102 |\n\n
\n\n
\n\n##### Output Sample\n\n| Products | Part Codes | Attributes |\n| --- | --- | --- |\n| SKF ball brg 2\" od 6202 | 6202 | `{\"length\":[\"2in\"]}` |\n| brg seal 1\" id 5493 | 5493 | `{\"length\":[\"1in\"]}` |\n| 3lb hammer 87102 | 87102 | `{\"weight\":[\"3lb\"]}` |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py", + "title": "WranglesPY concurrent implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/utility/_sources/concurrent.md", + "title": "Existing concurrent Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/convert/case.json b/wrangles-docs/static/registry/contracts/convert/case.json new file mode 100644 index 0000000..b93d08a --- /dev/null +++ b/wrangles-docs/static/registry/contracts/convert/case.json @@ -0,0 +1,143 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "12ff4120-3613-4801-8653-99c793477fbc", + "wrangle_name": "case", + "namespace": "convert", + "wrangle_key": "convert.case", + "aliases": [], + "slug": "convert/case", + "title": "Convert Case", + "description": "Change the letter case of text values.", + "status": "active", + "visibility": "public", + "tags": [ + "convert", + "text", + "case" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.convert.case", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "where": true, + "where_params": true, + "if": true + }, + "parameters": [ + { + "name": "input", + "description": "Name, index, or list of input columns.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ], + "items": { + "type": [ + "string", + "integer" + ] + } + } + }, + { + "name": "output", + "description": "Name or list of output columns. If omitted, each input column is overwritten.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array" + ], + "items": { + "type": "string" + } + } + }, + { + "name": "case", + "description": "Letter case to apply. Sentence case lowercases the value and capitalizes sentence starts.", + "required": false, + "role": "option", + "runtime_default": "lower", + "schema": { + "type": "string", + "enum": [ + "lower", + "upper", + "title", + "sentence" + ] + } + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + } + ], + "examples": [ + { + "id": "uppercase-output", + "title": "Write uppercase text to a new column", + "recipe": "wrangles:\n - convert.case:\n input: product\n output: product_upper\n case: upper", + "input_fixture": "/registry/fixtures/convert.case/uppercase-output.input.json", + "output_fixture": "/registry/fixtures/convert.case/uppercase-output.output.json", + "verification": "static" + } + ], + "guidance": "Use `convert.case` to normalize capitalization while keeping the source column\nor writing the result to a new column.\n\n## Behavior\n\n- Supported modes are `lower`, `upper`, `title`, and `sentence`.\n- Omitting `output` overwrites the input column.\n- Input and output lists must have equal lengths.\n- Non-string values are passed through unchanged and produce a warning.", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/convert.py", + "title": "WranglesPY convert.case implementation" + }, + { + "id": "legacy-docs", + "resource": "https://wrangles.io/python/recipes/wrangles/convert#case", + "title": "Legacy convert.case documentation" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/convert/data-type.json b/wrangles-docs/static/registry/contracts/convert/data-type.json new file mode 100644 index 0000000..eee0757 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/convert/data-type.json @@ -0,0 +1,161 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "52384f01-7164-404f-8615-063e7677a588", + "wrangle_name": "data_type", + "namespace": "convert", + "wrangle_key": "convert.data_type", + "aliases": [], + "slug": "convert/data-type", + "title": "Convert Data Type", + "description": "Convert values to strings, numbers, booleans, or datetimes.", + "status": "active", + "visibility": "public", + "tags": [ + "convert", + "data-type", + "validation" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.convert.data_type", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "where": true, + "where_params": true, + "if": true + }, + "parameters": [ + { + "name": "input", + "description": "Name, index, or list of input columns.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ], + "items": { + "type": [ + "string", + "integer" + ] + } + } + }, + { + "name": "output", + "description": "Name or list of output columns. If omitted, each input column is overwritten.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array" + ], + "items": { + "type": "string" + } + } + }, + { + "name": "data_type", + "description": "Data type to produce.", + "required": false, + "role": "option", + "runtime_default": "str", + "schema": { + "type": "string", + "enum": [ + "str", + "float", + "int", + "bool", + "datetime" + ] + } + }, + { + "name": "default", + "description": "Value returned when conversion fails. If omitted, the original value is retained.", + "required": false, + "role": "fallback-value", + "runtime_default": null, + "schema": { + "type": [ + "string", + "number", + "array", + "object", + "boolean", + "null" + ] + } + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + } + ], + "examples": [ + { + "id": "integer-with-fallback", + "title": "Convert quantities to integers with a fallback", + "recipe": "wrangles:\n - convert.data_type:\n input: quantity\n output: quantity_integer\n data_type: int\n default: 0", + "input_fixture": "/registry/fixtures/convert.data_type/integer-with-fallback.input.json", + "output_fixture": "/registry/fixtures/convert.data_type/integer-with-fallback.output.json", + "verification": "static" + } + ], + "guidance": "Use `convert.data_type` when a recipe needs consistent Python-compatible\nvalues rather than display-only formatting.\n\n## Behavior\n\n- Supported target types are `str`, `float`, `int`, `bool`, and `datetime`.\n- Omitting `data_type` uses the runtime default `str`.\n- Omitting `output` overwrites the input column.\n- Failed conversions retain the original value unless `default` is supplied.\n- Additional undocumented keyword arguments are implementation details and are\n not part of the public Registry contract.", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/convert.py", + "title": "WranglesPY convert.data_type implementation" + }, + { + "id": "legacy-docs", + "resource": "https://wrangles.io/python/recipes/wrangles/convert#data-type", + "title": "Legacy convert.data_type documentation" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/convert/fraction-to-decimal.json b/wrangles-docs/static/registry/contracts/convert/fraction-to-decimal.json new file mode 100644 index 0000000..d87cf34 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/convert/fraction-to-decimal.json @@ -0,0 +1,119 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "7c55752e-70ab-4809-8298-c59436127457", + "wrangle_name": "fraction_to_decimal", + "namespace": "convert", + "wrangle_key": "convert.fraction_to_decimal", + "aliases": [], + "slug": "convert/fraction-to-decimal", + "title": "Fraction to Decimal", + "description": "Convert fractions to decimals.", + "status": "active", + "visibility": "public", + "tags": [ + "convert", + "fraction-to-decimal" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.convert.fraction_to_decimal", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the input column.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "decimals", + "description": "Number of decimals to round fraction.", + "required": false, + "role": "option", + "runtime_default": 4, + "schema": { + "type": "integer" + } + }, + { + "name": "output", + "description": "Name of the output colum.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Convert fractions to decimals.\n\n## Migrated examples\n#### Converting a Column of Fractions to Decimals\n\n##### Recipe\n\n```yaml\nwrangles:\n - convert.fraction_to_decimal:\n input: fractions\n output: decimals\n decimals: 3\n```\n\n
\n\n
\n\n##### Input Sample\n\n| fractions |\n| --- |\n| 3/32 |\n| 25/64 |\n\n
\n\n
\n\n##### Output Sample\n\n| decimals |\n| --- |\n| 0.094 |\n| 0.391 |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/convert.py", + "title": "WranglesPY convert.fraction_to_decimal implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/convert/_sources/fraction-to-decimal.md", + "title": "Existing convert.fraction_to_decimal Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/convert/from-json.json b/wrangles-docs/static/registry/contracts/convert/from-json.json new file mode 100644 index 0000000..3225df8 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/convert/from-json.json @@ -0,0 +1,144 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "e370dfcf-b0fe-4c48-8a52-6f34c47e7978", + "wrangle_name": "from_json", + "namespace": "convert", + "wrangle_key": "convert.from_json", + "aliases": [], + "slug": "convert/from-json", + "title": "Convert From JSON", + "description": "Parse JSON text into lists, objects, scalars, booleans, or null values.", + "status": "active", + "visibility": "public", + "tags": [ + "convert", + "json", + "structured-data" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.convert.from_json", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "where": true, + "where_params": true, + "if": true + }, + "parameters": [ + { + "name": "input", + "description": "Name, index, or list of columns containing valid JSON text.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ], + "items": { + "type": [ + "string", + "integer" + ] + } + } + }, + { + "name": "output", + "description": "Name or list of output columns. If omitted, each input column is overwritten.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array" + ], + "items": { + "type": "string" + } + } + }, + { + "name": "default", + "description": "Value returned for empty or invalid JSON. A list may supply one fallback per input column.", + "required": false, + "role": "fallback-value", + "runtime_default": null, + "schema": { + "type": [ + "string", + "number", + "array", + "object", + "boolean", + "null" + ] + } + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + } + ], + "examples": [ + { + "id": "parse-structured-values", + "title": "Parse JSON objects and lists", + "recipe": "wrangles:\n - convert.from_json:\n input: attributes_json\n output: attributes", + "input_fixture": "/registry/fixtures/convert.from_json/parse-structured-values.input.json", + "output_fixture": "/registry/fixtures/convert.from_json/parse-structured-values.output.json", + "verification": "static" + } + ], + "guidance": "Use `convert.from_json` when a column contains JSON text that later wrangles\nneed to treat as structured values.\n\n## Behavior\n\n- Each non-fallback value is parsed with Python's JSON parser.\n- Omitting `output` overwrites the input column.\n- Multiple input columns may share one fallback or use one fallback per input.\n- Invalid JSON raises an error unless a non-null fallback is supplied.\n- Permissive Python-literal or YAML-like parsing is outside this wrangle's\n contract.", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/convert.py", + "title": "WranglesPY convert.from_json implementation" + }, + { + "id": "legacy-docs", + "resource": "https://wrangles.io/python/recipes/wrangles/convert#from-json", + "title": "Legacy convert.from_json documentation" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/convert/from-yaml.json b/wrangles-docs/static/registry/contracts/convert/from-yaml.json new file mode 100644 index 0000000..a9d57c8 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/convert/from-yaml.json @@ -0,0 +1,126 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "b1c20004-5f80-41c2-84d2-2d4601a033b5", + "wrangle_name": "from_yaml", + "namespace": "convert", + "wrangle_key": "convert.from_yaml", + "aliases": [], + "slug": "convert/from-yaml", + "title": "From YAML", + "description": "Convert a YAML representation into an object.", + "status": "active", + "visibility": "public", + "tags": [ + "convert", + "from-yaml" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.convert.from_yaml", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the input column.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "output", + "description": "Name of the output column. If omitted, the input column will be overwritten.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "default", + "description": "Value to return if the row is empty or fails to be parsed as YAML. If input is a list, default may also be a list - either a single value to apply to all columns, or one value per input column.", + "required": false, + "role": "fallback-value", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "object", + "number", + "boolean", + "null" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Convert a YAML representation into an object.\n\n## Migrated examples\n#### Convert YAML To An Object\n\n##### Recipe\n\n```yaml\nwrangles:\n - convert.from_yaml:\n input: column 1\n```\n\n
\n\n
\n\n##### Input Sample\n\n```yaml\nProduct Specs:\n length: 6 inch\n voltage: 24V\n weight: 3lb\n```\n\n
\n\n
\n\n##### Output Sample\n\n```python\n{\n 'Product Specs': {\n 'length': '6 inch',\n 'voltage': '24V',\n 'weight': '3lb'\n }\n}\n```\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/convert.py", + "title": "WranglesPY convert.from_yaml implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/convert/_sources/from-yaml.md", + "title": "Existing convert.from_yaml Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/convert/to-json.json b/wrangles-docs/static/registry/contracts/convert/to-json.json new file mode 100644 index 0000000..a43a62b --- /dev/null +++ b/wrangles-docs/static/registry/contracts/convert/to-json.json @@ -0,0 +1,140 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "94e54eb7-2b8c-4047-89d0-fb5d16baf396", + "wrangle_name": "to_json", + "namespace": "convert", + "wrangle_key": "convert.to_json", + "aliases": [], + "slug": "convert/to-json", + "title": "To JSON", + "description": "Convert an object to a JSON representation.", + "status": "active", + "visibility": "public", + "tags": [ + "convert", + "to-json" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.convert.to_json", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the input column.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "output", + "description": "Name of the output column. If omitted, the input column will be overwritten.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "ensure_ascii", + "description": "If true, non-ASCII characters will be escaped. Default is false.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "indent", + "description": "If indent is a non-negative integer or string, then JSON array elements and object members will be pretty-printed with that indent level. An indent level of 0, negative, or \"\" will only insert newlines. None (the default) selects the most compact representation. Using a positive integer indent indents that many spaces per level. If indent is a string (such as '\\t'), that string is used to indent each level.", + "required": false, + "role": "option", + "schema": { + "type": [ + "string", + "integer" + ] + } + }, + { + "name": "sort_keys", + "description": "If sort_keys is true (defaults to False), then the output of dictionaries will be sorted by key.", + "required": false, + "role": "option", + "schema": { + "type": "boolean" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Convert an object to a JSON representation.\n\n## Migrated examples\n#### Convert Text to JSON\n\n##### Recipe\n\n```yaml\nwrangles:\n - convert.to_json:\n input: column\n output: new column\n```\n\n
\n\n
\n\n##### Input Sample\n\n| column |\n| --- |\n| `['a', 'python', 'list']` |\n| `{'python': 'dict'}` |\n\n
\n\n
\n\n##### Output Sample\n\n| new column |\n| --- |\n| `[\"a\",\"python\",\"list\"]` |\n| `{\"python\":\"dict\"}` |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/convert.py", + "title": "WranglesPY convert.to_json implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/convert/_sources/to-json.md", + "title": "Existing convert.to_json Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/convert/to-yaml.json b/wrangles-docs/static/registry/contracts/convert/to-yaml.json new file mode 100644 index 0000000..a7210b0 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/convert/to-yaml.json @@ -0,0 +1,138 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "4cd6252f-ce47-4a9d-8272-3d87e875b72a", + "wrangle_name": "to_yaml", + "namespace": "convert", + "wrangle_key": "convert.to_yaml", + "aliases": [], + "slug": "convert/to-yaml", + "title": "To YAML", + "description": "Convert an object to a YAML representation.", + "status": "active", + "visibility": "public", + "tags": [ + "convert", + "to-yaml" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.convert.to_yaml", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the input column.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "output", + "description": "Name of the output column. If omitted, the input column will be overwritten.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "sort_keys", + "description": "If sort_keys is true (default: False), then the output of dictionaries will be sorted by key.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "allow_unicode", + "description": "Allow Unicode value accepted by the runtime.", + "required": false, + "role": "option", + "runtime_default": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "indent", + "description": "Specify the number of spaces for indentation to specify nested elements.", + "required": false, + "role": "option", + "schema": { + "type": "integer" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Convert an object to a YAML representation.\n\n## Migrated examples\n#### Convert a Dictionary to YAML\n\n##### Recipe\n\n```yaml\nwrangles:\n - convert.to_yaml:\n input: column 1\n indent: 2\n```\n\n
\n\n
\n\n##### Input Sample\n\n```python\n{\n 'Product Specs': {\n 'length': '6 inch',\n 'voltage': '24V',\n 'weight': '3lb'\n }\n}\n```\n\n
\n\n
\n\n##### Output Sample\n\n```yaml\nProduct Specs:\n length: 6 inch\n voltage: 24V\n weight: 3lb\n```\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/convert.py", + "title": "WranglesPY convert.to_yaml implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/convert/_sources/to-yaml.md", + "title": "Existing convert.to_yaml Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/copy.json b/wrangles-docs/static/registry/contracts/copy.json new file mode 100644 index 0000000..dd78b36 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/copy.json @@ -0,0 +1,111 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "b002fbdc-92c0-4347-889d-0f4bfeec99fa", + "wrangle_name": "copy", + "namespace": null, + "wrangle_key": "copy", + "aliases": [], + "slug": "copy", + "title": "Copy", + "description": "Make a copy of a column or a list of columns.", + "status": "active", + "visibility": "public", + "tags": [ + "transform", + "copy" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.pandas.copy", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the input columns or columns.", + "required": false, + "role": "column-selector", + "runtime_default": null, + "schema": { + "type": [ + "string", + "integer", + "array", + "null" + ] + } + }, + { + "name": "output", + "description": "Name of the output columns or columns.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Create a copy of columns in a dataframe.\n\n## Migrated examples\n#### Copying a Column With Input and Output\n\n##### Recipe\n\n```yaml\nwrangles:\n - copy:\n input: Product Data\n output: Product Data (copy)\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Product Data |\n| --- |\n| SKF ball brg |\n| brg seal |\n\n
\n\n
\n\n##### Output Sample\n\n| Product Data | Product Data (copy) |\n| --- | --- |\n| SKF ball bearing | SKF ball bearing |\n| bearing seal | bearing seal |\n\n
\n\n
\n\n#### Copying a Column Express as a Dictionary\n\n##### Recipe\n\n```yaml\nwrangles:\n - copy:\n Product Data: Product Data (copy)\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Product Data |\n| --- |\n| SKF ball brg |\n| brg seal |\n\n
\n\n
\n\n##### Output Sample\n\n| Product Data | Product Data (copy) |\n| --- | --- |\n| SKF ball bearing | SKF ball bearing |\n| bearing seal | bearing seal |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/pandas.py", + "title": "WranglesPY copy implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/transform/_sources/copy.md", + "title": "Existing copy Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/create/bins.json b/wrangles-docs/static/registry/contracts/create/bins.json new file mode 100644 index 0000000..1d7db10 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/create/bins.json @@ -0,0 +1,133 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "232e3ba0-4735-4934-88aa-0163181abb3f", + "wrangle_name": "bins", + "namespace": "create", + "wrangle_key": "create.bins", + "aliases": [], + "slug": "create/bins", + "title": "Bins", + "description": "Create a column that groups data into bins.", + "status": "active", + "visibility": "public", + "tags": [ + "create", + "bins" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.create.bins", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of input column.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "output", + "description": "Name of new column.", + "required": true, + "role": "column-output", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "bins", + "description": "Defines the number of equal-width bins in the range.", + "required": true, + "role": "option", + "schema": { + "type": [ + "integer", + "array" + ] + } + }, + { + "name": "labels", + "description": "Labels for the returned bins.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Creates a column that segments and sorts data values into bins. `bins` can be an integer or a list. When `bins` is an integer, the input data is split equally into that number of bins. When `bins` is a list, the input data is split based on the list boundaries.\n\n## Migrated examples\n#### Creating Bins With an Integer\n\n##### Recipe\n\n```yaml\nwrangles:\n - create.bins:\n input: Data\n output: Category\n bins: 3\n labels:\n - Bad\n - Medium\n - Good\n```\n\n
\n\n
\n\n##### Input Sample\n\n_No sample available._\n\n
\n\n
\n\n##### Output Sample\n\n| Data | Category |\n| --- | --- |\n| 1 | Bad |\n| 7 | Good |\n| 5 | Medium |\n| 4 | Medium |\n| 6 | Good |\n| 3 | Bad |\n\n
\n\n
\n\n#### Creating Bins With a List\n\n##### Recipe\n\n```yaml\nwrangles:\n - create.bins:\n input: Grades\n output: Letter Grade\n bins:\n - 0\n - 60\n - 70\n - 80\n - 90\n - 100\n labels:\n - F\n - D\n - C\n - B\n - A\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Grade | Student |\n| --- | --- |\n| 64 | Charles |\n| 92 | Sabrina |\n| 76 | Edward |\n| 84 | Wendy |\n\n
\n\n
\n\n##### Output Sample\n\n| Grade | Student | Letter Grade |\n| --- | --- | --- |\n| 64 | Charles | D |\n| 92 | Sabrina | A |\n| 76 | Edward | C |\n| 84 | Wendy | B |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py", + "title": "WranglesPY create.bins implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/bins.md", + "title": "Existing create.bins Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/create/column.json b/wrangles-docs/static/registry/contracts/create/column.json new file mode 100644 index 0000000..5317328 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/create/column.json @@ -0,0 +1,140 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "5a18e2c8-ec7c-45f5-88fd-bb5c358a8b40", + "wrangle_name": "column", + "namespace": "create", + "wrangle_key": "create.column", + "aliases": [], + "slug": "create/column", + "title": "Column", + "description": "Create column(s) with a user defined value. Defaults to None (empty).", + "status": "active", + "visibility": "public", + "tags": [ + "create", + "column" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.create.column", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "output", + "description": "Name or list of names of new columns or column_name: value pairs.", + "required": true, + "role": "column-output", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "value", + "description": "(Optional) Value(s) to add in the new column(s). If using a dictionary in output, value can only be a string.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "string", + "number", + "object", + "array", + "boolean", + "null" + ] + } + }, + { + "name": "value_if_exists", + "description": "Determines behaviour when the output column already exists. existing (default): leave the column unchanged. coalesce: fill empty/null cells with the new value, keeping non-null cells. new: overwrite the entire column with the new value.", + "required": false, + "role": "option", + "runtime_default": "existing", + "schema": { + "type": "string", + "enum": [ + "existing", + "coalesce", + "new" + ] + } + }, + { + "name": "coalesce_value", + "description": "Only used when value_if_exists is coalesce. Determines which side is preferred when both the existing and new values are non-empty. existing (default): keep the existing value, only fill empty/null cells with the new value. new: keep the new value, only fall back to the existing value where the new value is empty/null.", + "required": false, + "role": "option", + "runtime_default": "existing", + "schema": { + "type": "string", + "enum": [ + "existing", + "new" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Create column(s) with a user defined value. Defaults to `None` (empty). If you need to copy an existing column, use the copy wrangle instead.\n\n## Migrated examples\n#### Creating a New Column\n\n##### Recipe\n\n```yaml\nwrangles:\n - create.column:\n output: New Column\n value: new value # Optional, otherwise empty\n where: column > 1\n```\n\n
\n\n
\n\n##### Input Sample\n\n| column |\n| --- |\n| 1 |\n| 2 |\n| 3 |\n\n
\n\n
\n\n##### Output Sample\n\n| column | New Column |\n| --- | --- |\n| 1 | |\n| 2 | new value |\n| 3 | new value |\n\n
\n\n
\n\n#### Creating Multiple Columns\n\n##### Recipe\n\n```yaml\nwrangles:\n - create.column:\n output:\n - New Column 1: new value 1 # Optional, otherwise empty\n - New Column 2: new value 2\n - New Column 3: new value 1\n```\n\n
\n\n
\n\n##### Input Sample\n\n| column |\n| --- |\n| 1 |\n| 2 |\n| 3 |\n\n
\n\n
\n\n##### Output Sample\n\n| column | New Column 1 | New Column 2 | New Column 3 |\n| --- | --- | --- | --- |\n| 1 | new value 1 | new value 2 | new value 1 |\n| 2 | new value 1 | new value 2 | new value 1 |\n| 3 | new value 1 | new value 2 | new value 1 |\n\n
\n\n
\n\n#### Creating Columns That Consist of Lists\n\n##### Recipe\n\n```yaml\nwrangles:\n - create.column:\n output:\n - New Column:\n - 4\n - 5\n - 6\n```\n\n
\n\n
\n\n##### Input Sample\n\n| column |\n| --- |\n| 1 |\n| 2 |\n| 3 |\n\n
\n\n
\n\n##### Output Sample\n\n| column | New Column |\n| --- | --- |\n| 1 | [4, 5, 6] |\n| 2 | [4, 5, 6] |\n| 3 | [4, 5, 6] |\n\n
\n\n
\n\nColumns of empty lists can also be created by passing an empty list (`[]`) as the column value.", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py", + "title": "WranglesPY create.column implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/column.md", + "title": "Existing create.column Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/create/embeddings.json b/wrangles-docs/static/registry/contracts/create/embeddings.json new file mode 100644 index 0000000..56df279 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/create/embeddings.json @@ -0,0 +1,228 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "e3518afd-a819-40ec-8b49-eb25690220c1", + "wrangle_name": "embeddings", + "namespace": "create", + "wrangle_key": "create.embeddings", + "aliases": [], + "slug": "create/embeddings", + "title": "Embeddings", + "description": "Create an embedding based on text input.", + "status": "active", + "visibility": "public", + "tags": [ + "create", + "embeddings" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.create.embeddings", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "The column of text to create the embeddings for.", + "required": true, + "role": "column-selector", + "schema": { + "type": "string" + } + }, + { + "name": "api_key", + "description": "The API key.", + "required": true, + "role": "credential", + "schema": { + "type": "string" + } + }, + { + "name": "output", + "description": "The output column the embeddings will be saved as.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "batch_size", + "description": "The number of rows to submit per individual request.", + "required": false, + "role": "option", + "runtime_default": 100, + "schema": { + "type": "integer" + } + }, + { + "name": "threads", + "description": "The number of requests to submit in parallel. Each request contains the number of rows set as batch_size.", + "required": false, + "role": "option", + "runtime_default": 10, + "schema": { + "type": "integer" + } + }, + { + "name": "output_type", + "description": "Output the embeddings as a numpy array or a python list Default - python list.", + "required": false, + "role": "column-output", + "runtime_default": "python list", + "schema": { + "type": "string", + "enum": [ + "numpy array", + "python list" + ] + } + }, + { + "name": "model", + "description": "The specific model to use to generate the embeddings.", + "required": false, + "role": "option", + "runtime_default": "text-embedding-3-small", + "schema": { + "type": "string" + } + }, + { + "name": "retries", + "description": "The number of times to retry if the request fails. This will apply exponential backoff to help with rate limiting.", + "required": false, + "role": "option", + "runtime_default": 0, + "schema": { + "type": "integer" + } + }, + { + "name": "url", + "description": "The endpoint to send embedding requests to. Defaults to the standard endpoint for the resolved provider. Setting a Jina URL without an explicit provider will automatically use Jina's request/response format.", + "required": false, + "role": "option", + "runtime_default": "https://api.openai.com/v1/embeddings", + "schema": { + "type": "string" + } + }, + { + "name": "precision", + "description": "The precision of the embeddings. Default is float32. This should be used with output_type numpy array.", + "required": false, + "role": "option", + "runtime_default": "float32", + "schema": { + "type": "string", + "enum": [ + "float16", + "float32" + ] + } + }, + { + "name": "provider", + "description": "Controls the request/response format for the embedding API. When omitted, inferred from url (jina.ai → jina, otherwise openai). Setting provider also sets the default url for that provider, so you only need one of provider or url for standard endpoints. Use both together only when pointing to a custom endpoint that uses a non-default provider's API format (e.g. a Jina-compatible proxy).", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ], + "enum": [ + "openai", + "jina" + ] + } + }, + { + "name": "task", + "description": "The task type for the embedding model. Only applicable for the Jina provider. Selects the appropriate task-specific adapter.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ], + "enum": [ + "retrieval.query", + "retrieval.passage", + "text-matching", + "classification", + "separation" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Create an embedding based on text input.\n\n## Migrated examples\n#### Creating Embeddings\n\n##### Recipe\n\n```yaml\nwrangles:\n - create.embeddings:\n input: my_column\n api_key: ${my_key}\n output: embeddings\n```\n\n
\n\n
\n\n##### Input Sample\n\n| my_column |\n| --- |\n| angle grinder |\n| jig saw |\n\n
\n\n
\n\n##### Output Sample\n\n| my_column | embeddings |\n| --- | --- |\n| angle grinder | [0.010793785, -0.010007165, 0.0028609, -0.0139...] |\n| jig saw | [-0.008975127, 0.009314879, -0.024150735, -0.0...] |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py", + "title": "WranglesPY create.embeddings implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/embeddings.md", + "title": "Existing create.embeddings Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/create/guid.json b/wrangles-docs/static/registry/contracts/create/guid.json new file mode 100644 index 0000000..6c38ef2 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/create/guid.json @@ -0,0 +1,94 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "cf3aaab2-3d5b-4c9b-826e-7af7510521c9", + "wrangle_name": "guid", + "namespace": "create", + "wrangle_key": "create.guid", + "aliases": [], + "slug": "create/guid", + "title": "GUID", + "description": "Create column(s) with a GUID.", + "status": "active", + "visibility": "public", + "tags": [ + "create", + "guid" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.create.guid", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "output", + "description": "Name or list of names of new columns.", + "required": true, + "role": "column-output", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Create a column with a GUID (Globally Unique Identifier).\n\n## Migrated examples\n#### Creating a New GUID Column\n\n##### Recipe\n\n```yaml\nwrangles:\n - create.guid:\n output: GUID Column\n\n # OR\n\n - create.uuid:\n output: GUID Column\n```\n\n
\n\n
\n\n##### Input Sample\n\n_No sample available._\n\n
\n\n
\n\n##### Output Sample\n\n| GUID Column |\n| --- |\n| 9a13b4dd-1993-4bd2-8974-3f9a0f006d86 |\n| 1528d918-ecd7-457c-b44d-3d30705696d3 |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py", + "title": "WranglesPY create.guid implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/guid.md", + "title": "Existing create.guid Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/create/hash.json b/wrangles-docs/static/registry/contracts/create/hash.json new file mode 100644 index 0000000..4a16e89 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/create/hash.json @@ -0,0 +1,123 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "11e8fc13-00d2-4779-8d87-6288b07de7e7", + "wrangle_name": "hash", + "namespace": "create", + "wrangle_key": "create.hash", + "aliases": [], + "slug": "create/hash", + "title": "Hash", + "description": "Create a hash of a column.", + "status": "active", + "visibility": "public", + "tags": [ + "create", + "hash" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.create.hash", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of input column.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "output", + "description": "Name of new column.", + "required": true, + "role": "column-output", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "method", + "description": "The method to use to hash the input (Default: md5).", + "required": false, + "role": "option", + "runtime_default": "md5", + "schema": { + "type": "string", + "enum": [ + "md5", + "sha1", + "sha256", + "sha512" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Create a hash of a column.\n\n## Migrated examples\n#### Creating a New Hash Column\n\n##### Recipe\n\n```yaml\nwrangles:\n - create.hash:\n input: Description\n output: hash\n method: md5\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Description |\n| --- |\n| The wrench is blue |\n| The hammer is yellow |\n\n
\n\n
\n\n##### Output Sample\n\n| New Column |\n| --- |\n| ce114e4501d2f4e2dcea3e17b546f339 |\n| a54d88e06612d820bc3be72877c74f257b561b19 |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py", + "title": "WranglesPY create.hash implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/hash.md", + "title": "Existing create.hash Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/create/index.json b/wrangles-docs/static/registry/contracts/create/index.json new file mode 100644 index 0000000..596da93 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/create/index.json @@ -0,0 +1,128 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "0a4909ca-6e14-4da7-8a70-a7fd106d6944", + "wrangle_name": "index", + "namespace": "create", + "wrangle_key": "create.index", + "aliases": [], + "slug": "create/index", + "title": "Index", + "description": "Create column(s) with an incremental index. e.g. 1,2,3...", + "status": "active", + "visibility": "public", + "tags": [ + "create", + "index" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.create.index", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "output", + "description": "Name or list of names of new columns.", + "required": true, + "role": "column-output", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "start", + "description": "(Optional; default 1) Starting number for the index.", + "required": false, + "role": "option", + "runtime_default": 1, + "schema": { + "type": "integer" + } + }, + { + "name": "step", + "description": "(Optional; default 1) Step between successive rows.", + "required": false, + "role": "option", + "runtime_default": 1, + "schema": { + "type": "integer" + } + }, + { + "name": "by", + "description": "Optional. Cluster the created indexes by one or more columns.", + "required": false, + "role": "column-selector", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Create a new incremental index.\n\n## Migrated examples\n#### Creating a New Index Column\n\n##### Recipe\n\n```yaml\nwrangles:\n - create.index:\n output: New Index\n start: 1 # optional\n step: 1 # optional\n```\n\n
\n\n
\n\n##### Input Sample\n\n_No sample available._\n\n
\n\n
\n\n##### Output Sample\n\n| New Index |\n| --- |\n| 1 |\n| 2 |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py", + "title": "WranglesPY create.index implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/index.md", + "title": "Existing create.index Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/create/jinja.json b/wrangles-docs/static/registry/contracts/create/jinja.json new file mode 100644 index 0000000..c6ee0d6 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/create/jinja.json @@ -0,0 +1,125 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "10fc6709-16d4-4eab-8f56-6cb5d170ea66", + "wrangle_name": "jinja", + "namespace": "create", + "wrangle_key": "create.jinja", + "aliases": [], + "slug": "create/jinja", + "title": "Jinja", + "description": "Output text using a jinja template.", + "status": "active", + "visibility": "public", + "tags": [ + "create", + "jinja" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.create.jinja", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "template", + "description": "A dictionary which defines the template/location as well as the form which the template is input. If any keys use a space, they must be replaced with an underscore. Note: spaces within column names are replaced by underscores (_).", + "required": true, + "role": "option", + "schema": { + "type": "object", + "additionalProperties": false, + "properties": { + "file": { + "type": "string" + }, + "column": { + "type": "string" + }, + "string": { + "type": "string" + } + } + } + }, + { + "name": "output", + "description": "Name of the column to be output to.", + "required": true, + "role": "column-output", + "schema": { + "type": "array" + } + }, + { + "name": "input", + "description": "Specify a name of column containing a dictionary of elements to be used in jinja template. Otherwise, the column headers will be used as keys.", + "required": false, + "role": "column-selector", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Makes use of a Jinja template to create a description, title, or summary based on your data.\n\n:::info\nJinja templates do not allow variables with spaces. This wrangle automatically replaces spaces in column headers with underscores, so use underscores instead of spaces when referencing columns in the template.\n:::\n\n## Migrated examples\n#### Creating a Jinja Description\n\n##### Recipe\n\n```yaml\nwrangles:\n - create.jinja:\n output: Description\n template:\n string: |\n This is a {{ Brand }} {{ Item_Type }} that is {{ Size }}\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Size | Brand | Item Type |\n| --- | --- | --- |\n| 10mm | SKF | ball bearing |\n| 15mm | Timken | bearing seal |\n\n
\n\n
\n\n##### Output Sample\n\n| Size | Brand | Item Type | Description |\n| --- | --- | --- | --- |\n| 10mm | SKF | ball bearing | This is a SKF ball bearing that is 10mm |\n| 15mm | Timken | bearing seal | This is a Timken bearing seal that is 15mm |\n\n
\n\n
\n\nUsing `|` in YAML denotes a multi-line string that preserves line breaks. Use `>` for a multi-line string when line breaks should not be preserved.", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py", + "title": "WranglesPY create.jinja implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/jinja.md", + "title": "Existing create.jinja Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/create/uuid.json b/wrangles-docs/static/registry/contracts/create/uuid.json new file mode 100644 index 0000000..7e89e6f --- /dev/null +++ b/wrangles-docs/static/registry/contracts/create/uuid.json @@ -0,0 +1,94 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "c376f3ff-2283-4c4c-8d7f-70db6f53ed19", + "wrangle_name": "uuid", + "namespace": "create", + "wrangle_key": "create.uuid", + "aliases": [], + "slug": "create/uuid", + "title": "UUID", + "description": "Create column(s) with a UUID.", + "status": "active", + "visibility": "public", + "tags": [ + "create", + "uuid" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.create.uuid", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "output", + "description": "Name or list of names of new columns.", + "required": true, + "role": "column-output", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Create a column with a UUID (Universally Unique Identifier).\n\n## Migrated examples\n#### Creating a New GUID Column\n\n##### Recipe\n\n```yaml\nwrangles:\n - create.guid:\n output: GUID Column\n\n # OR\n\n - create.uuid:\n output: GUID Column\n```\n\n
\n\n
\n\n##### Input Sample\n\n_No sample available._\n\n
\n\n
\n\n##### Output Sample\n\n| GUID Column |\n| --- |\n| 9a13b4dd-1993-4bd2-8974-3f9a0f006d86 |\n| 1528d918-ecd7-457c-b44d-3d30705696d3 |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py", + "title": "WranglesPY create.uuid implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/uuid.md", + "title": "Existing create.uuid Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/date-calculator.json b/wrangles-docs/static/registry/contracts/date-calculator.json new file mode 100644 index 0000000..74e4668 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/date-calculator.json @@ -0,0 +1,154 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "19cfeb4f-02af-4ab2-895c-0ff2bb5cce19", + "wrangle_name": "date_calculator", + "namespace": null, + "wrangle_key": "date_calculator", + "aliases": [], + "slug": "date-calculator", + "title": "Date Calculator", + "description": "Add or Subtract time from a date.", + "status": "active", + "visibility": "public", + "tags": [ + "date", + "date-calculator" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.main.date_calculator", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the dates column.", + "required": true, + "role": "column-selector", + "schema": { + "type": "string" + } + }, + { + "name": "operation", + "description": "Date operation.", + "required": false, + "role": "option", + "runtime_default": "add", + "schema": { + "type": "string", + "enum": [ + "add", + "subtract" + ] + } + }, + { + "name": "output", + "description": "Name of the output column of dates.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "time_unit", + "description": "Time unit for operation.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ], + "enum": [ + "years", + "months", + "weeks", + "days", + "hours", + "minutes", + "seconds", + "milliseconds" + ] + } + }, + { + "name": "time_value", + "description": "Time unit value for operation.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "number", + "null" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Add or subtract time from a date.\n\n## Migrated examples\n#### Calculating a Future Date\n\n##### Recipe\n\n```yaml\nwrangles:\n - date_calculator:\n input: Date\n output: New Date\n operation: subtract # Optional default is addition\n time_unit: days\n time_value: 1\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Date |\n| --- |\n| 2022-12-26 |\n\n
\n\n
\n\n##### Output Sample\n\n| New Date |\n| --- |\n| 2022-12-25 |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py", + "title": "WranglesPY date_calculator implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/date/_sources/date-calculator.md", + "title": "Existing date_calculator Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/drop.json b/wrangles-docs/static/registry/contracts/drop.json new file mode 100644 index 0000000..150445e --- /dev/null +++ b/wrangles-docs/static/registry/contracts/drop.json @@ -0,0 +1,73 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "363bffbf-397e-4975-8382-e9efa5e9eed6", + "wrangle_name": "drop", + "namespace": null, + "wrangle_key": "drop", + "aliases": [], + "slug": "drop", + "title": "Drop", + "description": "Drop (Delete) selected column(s).", + "status": "active", + "visibility": "public", + "tags": [ + "select", + "drop" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.pandas.drop", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": false, + "where_params": false + }, + "parameters": [ + { + "name": "columns", + "description": "Name of the column(s) to drop.", + "required": true, + "role": "option", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Drop (Delete) selected column(s)\n\n## Migrated examples\n#### Dropping a Column\n\n##### Recipe\n\n```yaml\nwrangles:\n - drop:\n columns:\n - Material\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Material | Product Data |\n| --- | --- |\n| Ceramic | SKF ball brg |\n| Rubber | brg seal |\n\n
\n\n
\n\n##### Output Sample\n\n| Product Data |\n| --- |\n| SKF ball bearing |\n| bearing seal |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/pandas.py", + "title": "WranglesPY drop implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/drop.md", + "title": "Existing drop Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/explode.json b/wrangles-docs/static/registry/contracts/explode.json new file mode 100644 index 0000000..6c488f4 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/explode.json @@ -0,0 +1,115 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "4e4b13ac-8d50-4b2c-85c8-2c31de1e817d", + "wrangle_name": "explode", + "namespace": null, + "wrangle_key": "explode", + "aliases": [], + "slug": "explode", + "title": "Explode", + "description": "Explode a column of lists into rows.", + "status": "active", + "visibility": "public", + "tags": [ + "split", + "explode" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.pandas.explode", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the column(s) to explode. If multiple columns are included they must contain lists of the same length.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "reset_index", + "description": "Reset the index after exploding. Default True.", + "required": false, + "role": "option", + "runtime_default": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "drop_empty", + "description": "If true, any rows that contain an empty list will be dropped. If false, rows that contain empty lists will keep 1 row with an empty value. Default False.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Explode a column of lists into rows\n\n## Migrated examples\n#### Exploding a Column\n\n##### Recipe\n\n```yaml\nwrangles:\n - explode:\n input: Products\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Products | Manufacturer |\n| --- | --- |\n| [Ball Bearing, Bearing Seal] | SKF |\n| [Angle Grinder, Drill, Impact Driver] | Milwaukee |\n| Solid State Relay | Schneider |\n\n
\n\n
\n\n##### Output Sample\n\n| Products | Manufacturer |\n| --- | --- |\n| Ball Bearing | SKF |\n| Bearing Seal | SKF |\n| Angle Grinder | Milwaukee |\n| Drill | Milwaukee |\n| Impact Driver | Milwaukee |\n| Solid State Relay | Schneider |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/pandas.py", + "title": "WranglesPY explode implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/split/_sources/explode.md", + "title": "Existing explode Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/extract/address.json b/wrangles-docs/static/registry/contracts/extract/address.json new file mode 100644 index 0000000..0b720d8 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/extract/address.json @@ -0,0 +1,150 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "44153f95-4581-4cee-898e-b3b4714045fd", + "wrangle_name": "address", + "namespace": "extract", + "wrangle_key": "extract.address", + "aliases": [], + "slug": "extract/address", + "title": "Address", + "description": "Extract parts of addresses. Requires WrangleWorks Account.", + "status": "active", + "visibility": "public", + "tags": [ + "extract", + "address" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.extract.address", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": true, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the input column.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "output", + "description": "Name of the output column.", + "required": true, + "role": "column-output", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "dataType", + "description": "Specific part of the address to extract.", + "required": true, + "role": "option", + "schema": { + "type": "string", + "enum": [ + "streets", + "cities", + "regions", + "countries" + ] + } + }, + { + "name": "output_format", + "description": "Format of the extract output.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ], + "enum": [ + "list", + "columns", + "concatenate" + ] + } + }, + { + "name": "char", + "description": "Character to use when output_format is concatenate.", + "required": false, + "role": "option", + "runtime_default": ", ", + "schema": { + "type": "string" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Extract geographical information from unstructured text such as streets, cities, or countries. Requires WrangleWorks Account.\n\n## Migrated examples\n#### Extracting Street Name\n\n##### Recipe\n\n```yaml\nwrangles:\n - extract.address:\n input: Location\n output: Street\n dataType: streets\n where: SUBSTRING(Location, 1, 3) = '221'\n```\n\n
\n\n
\n\n##### Input Sample\n\n_No sample available._\n\n
\n\n
\n\n##### Output Sample\n\n| Street | Location |\n| --- | --- |\n| ['221 B Baker St.'] | 221 B Baker St., London, England, United Kingdom |\n| | London SW1A 1AA, London, England, United Kingdom |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py", + "title": "WranglesPY extract.address implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/address.md", + "title": "Existing extract.address Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/extract/ai.json b/wrangles-docs/static/registry/contracts/extract/ai.json new file mode 100644 index 0000000..54fb40a --- /dev/null +++ b/wrangles-docs/static/registry/contracts/extract/ai.json @@ -0,0 +1,488 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "d9f89b00-fda3-4f4c-826c-6417b9390607", + "wrangle_name": "ai", + "namespace": "extract", + "wrangle_key": "extract.ai", + "aliases": [], + "slug": "extract/ai", + "title": "AI", + "description": "Extract structured data from each input row using an AI model. Define the desired fields with output, or reuse a saved definition with model_id.", + "status": "active", + "visibility": "public", + "tags": [ + "ai", + "extract" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.extract.ai", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "api_key", + "description": "OpenAI API key used for this wrangle, normally supplied through a recipe variable.", + "required": true, + "role": "credential", + "schema": { + "type": "string" + } + }, + { + "name": "input", + "description": "Input column name, column index, or list of columns supplied together as DATA for each row. If omitted, all dataframe columns are supplied.", + "required": false, + "role": "column-selector", + "runtime_default": null, + "schema": { + "type": [ + "array", + "null" + ], + "items": { + "type": [ + "string", + "integer" + ] + } + } + }, + { + "name": "output", + "description": "Desired extraction. Use an object keyed by output column name for structured fields, a string for one prompted value, or an array of field names/definitions. Each field may use the schema options below.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "object", + "null" + ], + "patternProperties": { + "^[a-zA-Z0-9 _-]+$": { + "type": [ + "object", + "string" + ], + "properties": { + "type": { + "type": "string", + "description": "JSON data type required for this field. If omitted, common scalar types are accepted. Fields allow null by default.", + "enum": [ + "string", + "number", + "integer", + "boolean", + "null", + "object", + "array" + ] + }, + "enum": { + "type": "array" + }, + "examples": { + "type": [ + "array", + "object", + "string", + "number", + "integer", + "boolean", + "null" + ], + "properties": { + "name": { + "type": "string" + }, + "notes": { + "type": "string" + }, + "input": {}, + "output": {} + }, + "items": { + "anyOf": [ + { + "type": "object", + "required": [ + "input", + "output" + ], + "properties": { + "name": { + "type": "string" + }, + "notes": { + "type": "string" + }, + "input": {}, + "output": {} + } + }, + {} + ] + } + }, + "properties": { + "type": [ + "object", + "array", + "string" + ] + }, + "required": { + "type": [ + "array", + "string" + ] + }, + "additionalProperties": { + "type": [ + "boolean", + "object" + ] + }, + "items": { + "type": "object" + }, + "nullable": { + "type": "boolean" + } + } + } + } + } + }, + { + "name": "model_id", + "description": "ID of a saved extract.ai definition. Use it instead of defining an output schema. When output is also supplied with model_id in a recipe, output names the destination column or columns for the saved fields.", + "required": false, + "role": "model-reference", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "record_examples", + "description": "Whole-record examples. Each example has a separate input value or record and the complete expected output record. Optional name and notes provide model-visible context. Use {name: ..., notes: ..., input: ..., output: ...}. Omitted nullable output fields are completed with null. Required non-null nested properties must be supplied. This differs from examples nested under one output field, which teach only that field.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "array", + "object", + "null" + ], + "required": [ + "input", + "output" + ], + "properties": { + "name": { + "type": "string" + }, + "notes": { + "type": "string" + }, + "input": {}, + "output": {} + }, + "items": { + "type": "object", + "required": [ + "input", + "output" + ], + "properties": { + "name": { + "type": "string" + }, + "notes": { + "type": "string" + }, + "input": {}, + "output": {} + } + } + } + }, + { + "name": "output_format", + "description": "How extracted fields are written. columns writes one dataframe column per field (default); dictionary keeps one object; concatenate joins fields into one string using char.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ], + "enum": [ + "dictionary", + "columns", + "concatenate" + ] + } + }, + { + "name": "char", + "description": "Separator used only when output_format is concatenate. Defaults to comma-space.", + "required": false, + "role": "option", + "runtime_default": ", ", + "schema": { + "type": "string" + } + }, + { + "name": "web_search", + "description": "Enable OpenAI Responses web search; the model decides when searching helps. When true, every row also receives web_search_sources: a deduplicated list of {title, url} objects in source order, or an empty list when no source was used. This reserved column is automatic. Requires protocol responses. Defaults to false.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "instructions", + "description": "Additional guidance applied to every input row. Use this for decision rules, evidence priorities, normalization requirements, or other behavior that applies to the complete extraction.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ], + "items": { + "type": "string" + } + } + }, + { + "name": "model", + "description": "OpenAI model ID for this call. If omitted, uses the configured extract.ai default; a saved model definition may supply its own model.", + "required": false, + "role": "option", + "schema": { + "type": "string" + } + }, + { + "name": "threads", + "description": "Maximum number of row-level requests sent in parallel. The configured default is 32.", + "required": false, + "role": "option", + "schema": { + "type": "integer", + "minimum": 1 + } + }, + { + "name": "timeout", + "description": "Maximum seconds for one HTTP attempt. The configured default is 12; deadline can end the overall call sooner.", + "required": false, + "role": "option", + "schema": { + "type": "number", + "exclusiveMinimum": 0 + } + }, + { + "name": "retries", + "description": "Number of additional attempts after a retryable failure. The configured default is 1. Backoff and request timeouts remain bounded by deadline.", + "required": false, + "role": "option", + "schema": { + "type": "integer", + "minimum": 0 + } + }, + { + "name": "url", + "description": "Override the endpoint for the selected protocol. A chat/completions URL selects the legacy protocol only when protocol is omitted; new recipes should use the configured Responses endpoint.", + "required": false, + "role": "option", + "schema": { + "type": "string" + } + }, + { + "name": "provider", + "description": "AI service provider. Currently only OpenAI is supported.", + "required": false, + "role": "option", + "schema": { + "type": "string", + "enum": [ + "openai" + ] + } + }, + { + "name": "protocol", + "description": "OpenAI API protocol. Responses is the configured default and is required for web_search; chat_completions remains available for legacy definitions.", + "required": false, + "role": "option", + "schema": { + "type": "string", + "enum": [ + "responses", + "chat_completions" + ] + } + }, + { + "name": "deadline", + "description": "Total seconds allowed for the entire wrangle call, including queued work, retries, and backoff. The configured default is 15.", + "required": false, + "role": "option", + "schema": { + "type": "number", + "exclusiveMinimum": 0 + } + }, + { + "name": "store", + "description": "Whether OpenAI may store Responses API results. Defaults to false.", + "required": false, + "role": "option", + "schema": { + "type": "boolean" + } + }, + { + "name": "cache", + "description": "Reuse identical successful results from the bounded warm-instance cache. Defaults to true. Set false when fresh model or web results are required.", + "required": false, + "role": "option", + "schema": { + "type": "boolean" + } + }, + { + "name": "cache_ttl", + "description": "Maximum age in seconds for a cached result used by this call. Applies to extracted values and web_search_sources together.", + "required": false, + "role": "option", + "schema": { + "type": "number", + "exclusiveMinimum": 0 + } + }, + { + "name": "strict", + "description": "Require OpenAI structured-output strict mode. Defaults to true. Definitions with dynamic dictionary keys automatically switch to non-strict provider mode and are still validated locally.", + "required": false, + "role": "option", + "schema": { + "type": "boolean" + } + }, + { + "name": "reasoning", + "description": "Responses API reasoning controls. Set effort for reasoning-capable models. The configured default is none when that model supports it; otherwise the provider default applies.", + "required": false, + "role": "option", + "schema": { + "type": "object", + "properties": { + "effort": { + "type": "string", + "enum": [ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh" + ] + } + } + } + }, + { + "name": "verbosity", + "description": "Responses API text verbosity for compatible models. Defaults to low when supported; ignored with a warning for incompatible models.", + "required": false, + "role": "option", + "schema": { + "type": "string", + "enum": [ + "low", + "medium", + "high" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Use AI to extract meaningful structured data. `extract.ai` can be used recipe-first, where the output schema is defined in the recipe, or model-first, where a saved extract.ai model is called by `model_id`.\n\n:::info\nFor saved extract.ai models, this is the preferred calling pattern compared with using `extract.custom`.\n:::\n\n## Migrated examples\n#### Making Use of Output Parameters\n\n##### Recipe\n\n```yaml\nwrangles:\n - extract.ai:\n api_key: Your OpenAI api key\n input: Product Specs\n output:\n Blade Diameter:\n type: number\n description: The diameter of the blade used, reported in inches.\n default: N/A\n examples:\n - 4.5\"\n - 8 inch\n Max. RPM:\n type: number\n description: The maximum rotations per minute (rpm).\n default: 3600\n examples:\n - 3600 max. rpm\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Product Specs |\n| --- |\n| 18V Cordless 4.5in angle grinder |\n| 120V 12in chop saw 3600 max. rpm |\n\n
\n\n
\n\n##### Output Sample\n\n| Blade Diameter | Max. RPM |\n| --- | --- |\n| 4.5 inches | |\n| 12 inches | 3600 |\n\n
\n\n
\n\n#### Description Only\n\n##### Recipe\n\n```yaml\nwrangles:\n - extract.ai:\n api_key: Your OpenAI api key\n input: Product Specs\n output:\n Blade Diameter: The diameter of the blade used, reported in inches.\n Max. RPM: The maximum rotations per minute (rpm).\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Product Specs |\n| --- |\n| 18V Cordless 4.5in angle grinder |\n| 120V 12in chop saw 3600 max. rpm |\n\n
\n\n
\n\n##### Output Sample\n\n| Blade Diameter | Max. RPM |\n| --- | --- |\n| 4.5 inches | |\n| 12 inches | 3600 |\n\n
\n\n
\n\n#### Model Based Column Output by Name\n\n##### Recipe\n\n```yaml\nwrangles:\n - extract.ai:\n api_key: Your OpenAI api key\n model_id: xxxx-xxxx-xxxxxxxx\n output:\n - Colors\n - Sizes\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Items |\n| --- |\n| Large yellow square |\n| Medium orange triangle |\n\n
\n\n
\n\n##### Output Sample\n\n| Colors | Sizes |\n| --- | --- |\n| [yellow] | Large |\n| [orange] | Medium |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py", + "title": "WranglesPY extract.ai implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/ai.md", + "title": "Existing extract.ai Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/extract/attributes.json b/wrangles-docs/static/registry/contracts/extract/attributes.json new file mode 100644 index 0000000..3692d90 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/extract/attributes.json @@ -0,0 +1,228 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "03ccedef-c938-41f1-8980-280f1a91542e", + "wrangle_name": "attributes", + "namespace": "extract", + "wrangle_key": "extract.attributes", + "aliases": [], + "slug": "extract/attributes", + "title": "Attributes", + "description": "Extract numeric attributes from the input such as weights or lengths. Requires WrangleWorks Account.", + "status": "active", + "visibility": "public", + "tags": [ + "extract", + "attributes" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.extract.attributes", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": true, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the input column.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "output", + "description": "Name of the output column.", + "required": true, + "role": "column-output", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "responseContent", + "description": "Span - returns the text found. object - returns an object with the value and unit.", + "required": false, + "role": "option", + "runtime_default": "span", + "schema": { + "type": "string", + "enum": [ + "span", + "object" + ] + } + }, + { + "name": "attribute_type", + "description": "Request only a specific type of attribute.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ], + "enum": [ + "angle", + "area", + "capacitance", + "charge", + "current", + "data transfer rate", + "electrical conductance", + "electrical resistance", + "energy", + "force", + "frequency", + "inductance", + "instance frequency", + "length", + "luminous flux", + "weight", + "power", + "pressure", + "speed", + "velocity", + "temperature", + "time", + "voltage", + "volume", + "volumetric flow" + ] + } + }, + { + "name": "desired_unit", + "description": "Convert the extracted unit to the desired unit.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "bound", + "description": "When returning an object, if the input is a range (e.g. 10-20mm) set the value to return. min, mid or max. Default mid.", + "required": false, + "role": "option", + "runtime_default": "mid", + "schema": { + "type": "string", + "enum": [ + "min", + "mid", + "max" + ] + } + }, + { + "name": "first_element", + "description": "Get the first element from results.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "output_format", + "description": "Format of the extract output.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ], + "enum": [ + "list", + "dictionary", + "columns", + "concatenate" + ] + } + }, + { + "name": "char", + "description": "Character to use when output_format is concatenate.", + "required": false, + "role": "option", + "runtime_default": ", ", + "schema": { + "type": "string" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Extract numeric attributes from unstructured text such as lengths, voltages, weights, or temperatures. Requires WrangleWorks Account.\n\n## Migrated examples\n#### Extracting All Attributes\n\n##### Recipe\n\n```yaml\nwrangles:\n - extract.attributes:\n input: tools\n output: attributes\n responseContent: span\n```\n\n
\n\n
\n\n##### Input Sample\n\n_No sample available._\n\n
\n\n
\n\n##### Output Sample\n\n| Tools (input) | Attributes (span )(output) |\n| --- | --- |\n| hammer 5kg, 0.5m | \\{'length': ['0.5m'], 'mass': ['5kg']\\} |\n\n
\n\n
\n\n#### Extracting All Attributes\n\n##### Recipe\n\n```yaml\nwrangles:\n - extract.attributes:\n input: tools\n output: attributes\n responseContent: object\n```\n\n
\n\n
\n\n##### Input Sample\n\n_No sample available._\n\n
\n\n
\n\n##### Output Sample\n\n| Tools (input) | Attributes (Object) (output) |\n| --- | --- |\n| hammer 5kg, 0.5m | \\{'length': [\\{'unit': 'metre', 'value': 0.5\\}], 'mass': [\\{'unit': 'kilogram', 'value': 5.0\\}]\\} |\n\n
\n\n
\n\n#### Extracting Specific Attributes\n\n##### Recipe\n\n```yaml\nwrangles:\n - extract.attributes:\n input: Tools\n output: attributes\n responseContent: span\n attribute_type: mass # Specific attributes\n```\n\n
\n\n
\n\n##### Input Sample\n\n_No sample available._\n\n
\n\n
\n\n##### Output Sample\n\n_No sample available._\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py", + "title": "WranglesPY extract.attributes implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/attributes.md", + "title": "Existing extract.attributes Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/extract/brackets.json b/wrangles-docs/static/registry/contracts/extract/brackets.json new file mode 100644 index 0000000..3e4d85d --- /dev/null +++ b/wrangles-docs/static/registry/contracts/extract/brackets.json @@ -0,0 +1,158 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "9b4c15fa-2aaa-40c8-8834-6e835760bee5", + "wrangle_name": "brackets", + "namespace": "extract", + "wrangle_key": "extract.brackets", + "aliases": [], + "slug": "extract/brackets", + "title": "Brackets", + "description": "Extract text properties in brackets from the input.", + "status": "active", + "visibility": "public", + "tags": [ + "extract", + "brackets" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.extract.brackets", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the input column.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "output", + "description": "Name of the output columns.", + "required": true, + "role": "column-output", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "find", + "description": "(Optional) The type of brackets to find (round '()', square '[]', curly '{}', angled '<>'). Default is all brackets.", + "required": false, + "role": "option", + "runtime_default": "all", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "include_brackets", + "description": "(Optional) Include the brackets in the output.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "output_format", + "description": "Format of the extract output.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ], + "enum": [ + "list", + "columns", + "concatenate" + ] + } + }, + { + "name": "char", + "description": "Character to use when output_format is concatenate.", + "required": false, + "role": "option", + "runtime_default": ", ", + "schema": { + "type": "string" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Extract text in brackets from the input.\n\n## Migrated examples\n#### Extracting Data Within Brackets\n\n##### Recipe\n\n```yaml\nwrangles:\n - extract.brackets:\n input: Data\n output: Output\n```\n\n
\n\n
\n\n##### Input Sample\n\n_No sample available._\n\n
\n\n
\n\n##### Output Sample\n\n| Data | Output |\n| --- | --- |\n| `{Hello}` | Hello |\n| `[Wrangles]` | Wrangles |\n| `(!)` | ! |\n| `` | ! |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py", + "title": "WranglesPY extract.brackets implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/brackets.md", + "title": "Existing extract.brackets Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/extract/codes.json b/wrangles-docs/static/registry/contracts/extract/codes.json new file mode 100644 index 0000000..042c994 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/extract/codes.json @@ -0,0 +1,224 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "da591387-0fca-4842-8bcb-d19f561f0292", + "wrangle_name": "codes", + "namespace": "extract", + "wrangle_key": "extract.codes", + "aliases": [], + "slug": "extract/codes", + "title": "Codes", + "description": "Extract alphanumeric codes from the input. Requires WrangleWorks Account.", + "status": "active", + "visibility": "public", + "tags": [ + "extract", + "codes" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.extract.codes", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": true, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name or list of input columns.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "output", + "description": "Name or list of output columns.", + "required": true, + "role": "column-output", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "first_element", + "description": "Get the first element from results.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "output_format", + "description": "Format of the extract output.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ], + "enum": [ + "list", + "columns", + "concatenate" + ] + } + }, + { + "name": "char", + "description": "Character to use when output_format is concatenate.", + "required": false, + "role": "option", + "runtime_default": ", ", + "schema": { + "type": "string" + } + }, + { + "name": "min_length", + "description": "Minimum length of allowed results.", + "required": false, + "role": "option", + "schema": { + "type": [ + "integer", + "string" + ] + } + }, + { + "name": "max_length", + "description": "Maximum length of allowed results.", + "required": false, + "role": "option", + "schema": { + "type": [ + "integer", + "string" + ] + } + }, + { + "name": "strategy", + "description": "Controls filtering of likely false positives such as measurements. Lenient skips this filter; balanced and strict currently apply the same filter. Default is balanced. Unless min_length is provided, minimum lengths default to 3 for lenient, 4 for balanced, and 5 for strict.", + "required": false, + "role": "option", + "schema": { + "type": "string", + "enum": [ + "lenient", + "balanced", + "strict" + ] + } + }, + { + "name": "sort_order", + "description": "Default is input order. Also allows longest or shortest.", + "required": false, + "role": "option", + "schema": { + "type": "string", + "enum": [ + "input", + "longest", + "shortest" + ] + } + }, + { + "name": "disallowed_patterns", + "description": "A pattern or JSON array of regex patterns to not include in the found codes.", + "required": false, + "role": "option", + "schema": { + "type": "string" + } + }, + { + "name": "include_multi_part_tokens", + "description": "Whether to include multi-part tokens that have a space. Default True.", + "required": false, + "role": "option", + "schema": { + "type": "boolean" + } + }, + { + "name": "extract_raw", + "description": "Whether to return tokens with their adjacent non-whitespace characters included, rather than the cleaned token. Default False.", + "required": false, + "role": "option", + "schema": { + "type": "boolean" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Extract alphanumeric codes from unstructured text. Can be performed on one column or multiple columns. Requires WrangleWorks Account.\n\n## Migrated examples\n#### Extracting Codes From Single Column\n\n##### Recipe\n\n```yaml\n# One column input\nwrangles:\n - extract.codes:\n input: Secret\n output: Code Extract\n```\n\n
\n\n
\n\n##### Input Sample\n\n_No sample available._\n\n
\n\n
\n\n##### Output Sample\n\n| Secret | Code Extract |\n| --- | --- |\n| to gain access use Z1ON0101 | ['Z1ON0101'] |\n\n
\n\n
\n\n#### Extracting Codes From Multiple Columns\n\n##### Recipe\n\n```yaml\n# Multi column input\nwrangles:\n - extract.codes:\n input:\n - code1\n - code2\n output: Codes\n```\n\n
\n\n
\n\n##### Input Sample\n\n_No sample available._\n\n
\n\n
\n\n##### Output Sample\n\n| Codes | code1 | code2 |\n| --- | --- | --- |\n| ['CH465517080-1', 'CH465517080-2'] | code CH465517080-1 | code CH465517080-2 |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py", + "title": "WranglesPY extract.codes implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/codes.md", + "title": "Existing extract.codes Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/extract/custom.json b/wrangles-docs/static/registry/contracts/extract/custom.json new file mode 100644 index 0000000..3ff4c63 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/extract/custom.json @@ -0,0 +1,230 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "e8e96b76-86bf-41dc-8d16-825dcff9688b", + "wrangle_name": "custom", + "namespace": "extract", + "wrangle_key": "extract.custom", + "aliases": [], + "slug": "extract/custom", + "title": "Custom", + "description": "Extract data from the input using a DIY or bespoke extraction wrangle. Requires WrangleWorks Account and Subscription.", + "status": "active", + "visibility": "public", + "tags": [ + "extract", + "custom" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.extract.custom", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": true, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name or list of input columns.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "model_id", + "description": "The ID of the wrangle to use.", + "required": true, + "role": "model-reference", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "output", + "description": "Name or list of output columns.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "use_labels", + "description": "Use Labels in the extract output {label: value}.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "first_element", + "description": "Get the first element from results.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "case_sensitive", + "description": "Allows the wrangle to be case sensitive if set to True, default is False.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "extract_raw", + "description": "Extract the raw data from the wrangle.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "use_spellcheck", + "description": "Use spellcheck to also find minor mispellings compared to the reference data.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "include_empty_labels", + "description": "Include labels with no found values in the output when using use_labels=True.", + "required": false, + "role": "option", + "runtime_default": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "sort", + "description": "Sort the results.", + "required": false, + "role": "option", + "runtime_default": "training_order", + "schema": { + "type": "string", + "enum": [ + "training_order", + "input_order", + "longest", + "shortest", + "alphabetical", + "reverse_alphabetical", + "ascending", + "descending" + ] + } + }, + { + "name": "output_format", + "description": "Format of the extract output.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ], + "enum": [ + "list", + "dictionary", + "columns", + "concatenate" + ] + } + }, + { + "name": "char", + "description": "Character to use when output_format is concatenate.", + "required": false, + "role": "option", + "runtime_default": ", ", + "schema": { + "type": "string" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Extract data from the input using a DIY or bespoke extraction wrangle. Can be performed on one column or multiple columns. Requires WrangleWorks Account and Subscription.\n\n:::info\nNon-regex pattern matching extracts whole-word matches separated by word boundaries. Word boundaries include anything that is not a letter, number, or underscore.\n:::\n\n## Migrated examples\n#### Extracting Wood Types From Single Column\n\n##### Recipe\n\n```yaml\n# One column input\nwrangles:\n - extract.custom:\n input: Product\n output: Wood Types\n model_id: model_id_here\n```\n\n
\n\n
\n\n##### Input Sample\n\n_No sample available._\n\n
\n\n
\n\n##### Output Sample\n\n| Product | Wood Types |\n| --- | --- |\n| Dining Oakwood Chair | Oakwood |\n| Living Room Teakwood Frame Mirror | Teakwood |\n\n
\n\n
\n\n#### Extracting Wood Types From Multiple Columns\n\n##### Recipe\n\n```yaml\n# Multi column input\nwrangles:\n - extract.custom:\n input:\n - Part 1 of 2\n - Part 2 of 2\n output: Wood Types\n model_id: model_id_here\n```\n\n
\n\n
\n\n##### Input Sample\n\n_No sample available._\n\n
\n\n
\n\n##### Output Sample\n\n| Wood Types | Part 1 of 2 | Part 2 of 2 |\n| --- | --- | --- |\n| ['Acacia Wood', 'Imitation Wood'] | Dining Acacia Wood Table | Imitation Wood Table Chairs |\n\n
\n\n
\n\n#### Using Multiple Extract Models\n\n##### Recipe\n\n```yaml\n# Multiple Models\nwrangles:\n - extract.custom:\n input:\n - Product\n - Product\n output:\n - Wood Types\n - Item Type\n model_id:\n - wood_Type_model_id\n - item_type_model_id\n```\n\n
\n\n
\n\n##### Input Sample\n\n_No sample available._\n\n
\n\n
\n\n##### Output Sample\n\n| Product | Item Type | Wood Types |\n| --- | --- | --- |\n| Dining Oakwood Chair | Chair | Oakwood |\n| Living Room Teakwood Frame Mirror | Mirror | Teakwood |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py", + "title": "WranglesPY extract.custom implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/custom.md", + "title": "Existing extract.custom Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/extract/date-properties.json b/wrangles-docs/static/registry/contracts/extract/date-properties.json new file mode 100644 index 0000000..b095c5f --- /dev/null +++ b/wrangles-docs/static/registry/contracts/extract/date-properties.json @@ -0,0 +1,127 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "a346de62-93cd-44ba-8d30-a6305629c6d7", + "wrangle_name": "date_properties", + "namespace": "extract", + "wrangle_key": "extract.date_properties", + "aliases": [], + "slug": "extract/date-properties", + "title": "Date Properties", + "description": "Extract date properties from a date (day, month, year, etc...).", + "status": "active", + "visibility": "public", + "tags": [ + "extract", + "date-properties" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.extract.date_properties", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the input column.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "property", + "description": "Property to extract from date.", + "required": true, + "role": "option", + "schema": { + "type": "string", + "enum": [ + "day", + "day_of_year", + "month", + "month_name", + "weekday", + "week_day_name", + "week_year", + "quarter" + ] + } + }, + { + "name": "output", + "description": "Name of the output columns.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Extract date properties from a date, such as day, month, year, weekday, or quarter.\n\n## Migrated examples\n#### Extracting Month From Date\n\n##### Recipe\n\n```yaml\nwrangles:\n - extract.date_properties:\n input: Date\n output: Output\n property: month_name\n```\n\n
\n\n
\n\n##### Input Sample\n\n_No sample available._\n\n
\n\n
\n\n##### Output Sample\n\n| Date | Output |\n| --- | --- |\n| 1992-08-13 00:00:00 | August |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py", + "title": "WranglesPY extract.date_properties implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/date-properties.md", + "title": "Existing extract.date_properties Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/extract/date-range.json b/wrangles-docs/static/registry/contracts/extract/date-range.json new file mode 100644 index 0000000..02d5b5c --- /dev/null +++ b/wrangles-docs/static/registry/contracts/extract/date-range.json @@ -0,0 +1,138 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "9cebfa6f-a524-4aec-84a7-02d77b792843", + "wrangle_name": "date_range", + "namespace": "extract", + "wrangle_key": "extract.date_range", + "aliases": [], + "slug": "extract/date-range", + "title": "Date Range", + "description": "Extract date range frequency from two dates.", + "status": "active", + "visibility": "public", + "tags": [ + "extract", + "date-range" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.extract.date_range", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "start_time", + "description": "Name of the start date column.", + "required": true, + "role": "option", + "schema": { + "type": "string" + } + }, + { + "name": "end_time", + "description": "Name of the end date column.", + "required": true, + "role": "option", + "schema": { + "type": "string" + } + }, + { + "name": "output", + "description": "Name of the output column.", + "required": true, + "role": "column-output", + "schema": { + "type": "string" + } + }, + { + "name": "range", + "description": "Type of frequency to count.", + "required": false, + "role": "option", + "runtime_default": "day", + "schema": { + "type": "string", + "enum": [ + "business days", + "days", + "weeks", + "months", + "semi months", + "business month ends", + "month starts", + "semi month starts", + "business month starts", + "quarters", + "quarter starts", + "years", + "business hours", + "hours", + "minutes", + "seconds", + "milliseconds" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Extract date range frequency from two dates.\n\n## Migrated examples\n#### Extracting Number of Months From Range\n\n##### Recipe\n\n```yaml\nwrangles:\n - extract.date_range:\n start_time: Start\n end_time: End\n output: Output\n range: months\n```\n\n
\n\n
\n\n##### Input Sample\n\n_No sample available._\n\n
\n\n
\n\n##### Output Sample\n\n| End | Start | Output |\n| --- | --- | --- |\n| 2023-08-13 00:00:00 | 1992-08-13 00:00:00 | 371 |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py", + "title": "WranglesPY extract.date_range implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/date-range.md", + "title": "Existing extract.date_range Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/extract/html.json b/wrangles-docs/static/registry/contracts/extract/html.json new file mode 100644 index 0000000..4086ce3 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/extract/html.json @@ -0,0 +1,150 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "728fc87a-a20d-4efa-833a-612e0b5eadc3", + "wrangle_name": "html", + "namespace": "extract", + "wrangle_key": "extract.html", + "aliases": [], + "slug": "extract/html", + "title": "HTML", + "description": "Extract elements from strings containing html. Requires WrangleWorks Account.", + "status": "active", + "visibility": "public", + "tags": [ + "extract", + "html" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.extract.html", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": true, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name or list of input columns.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "data_type", + "description": "The type of data to extract.", + "required": true, + "role": "option", + "schema": { + "type": "string", + "enum": [ + "text", + "links" + ] + } + }, + { + "name": "output", + "description": "Name or list of output columns.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "output_format", + "description": "Format of the extract output.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ], + "enum": [ + "list", + "columns", + "concatenate" + ] + } + }, + { + "name": "char", + "description": "Character to use when output_format is concatenate.", + "required": false, + "role": "option", + "runtime_default": ", ", + "schema": { + "type": "string" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Extract text and links from HTML elements. Requires WrangleWorks Account.\n\n## Migrated examples\n#### Extracting Text From HTML\n\n##### Recipe\n\n```yaml\nwrangles:\n - extract.html:\n input: HTML\n output: Text\n data_type: text\n```\n\n
\n\n
\n\n##### Input Sample\n\n_No sample available._\n\n
\n\n
\n\n##### Output Sample\n\n| HTML | Text |\n| --- | --- |\n| ` | |\n\n
\n\n
\n\n#### Extracting Links From HTML\n\n##### Recipe\n\n```yaml\nwrangles:\n - extract.html:\n input: HTML\n output: Links\n data_type: links\n```\n\n
\n\n
\n\n##### Input Sample\n\n_No sample available._\n\n
\n\n
\n\n##### Output Sample\n\n| HTML | Links |\n| --- | --- |\n| ` | |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py", + "title": "WranglesPY extract.html implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/html.md", + "title": "Existing extract.html Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/extract/properties.json b/wrangles-docs/static/registry/contracts/extract/properties.json new file mode 100644 index 0000000..807928d --- /dev/null +++ b/wrangles-docs/static/registry/contracts/extract/properties.json @@ -0,0 +1,179 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "23bbdb86-fd13-4b78-8fff-a7a76769ab63", + "wrangle_name": "properties", + "namespace": "extract", + "wrangle_key": "extract.properties", + "aliases": [], + "slug": "extract/properties", + "title": "Properties", + "description": "Extract text properties from the input. Requires WrangleWorks Account.", + "status": "active", + "visibility": "public", + "tags": [ + "extract", + "properties" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.extract.properties", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": true, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the input column.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "output", + "description": "Name of the output columns.", + "required": true, + "role": "column-output", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "property_type", + "description": "The specific type of properties to extract.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ], + "enum": [ + "Colours", + "Materials", + "Shapes", + "Standards" + ] + } + }, + { + "name": "return_data_type", + "description": "Legacy format option. Prefer output_format.", + "required": false, + "role": "option", + "runtime_default": "list", + "schema": { + "type": "string", + "enum": [ + "list", + "string" + ] + } + }, + { + "name": "first_element", + "description": "Get the first element from results.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "output_format", + "description": "Format of the extract output.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ], + "enum": [ + "list", + "dictionary", + "columns", + "concatenate" + ] + } + }, + { + "name": "char", + "description": "Character to use when output_format is concatenate.", + "required": false, + "role": "option", + "runtime_default": ", ", + "schema": { + "type": "string" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Extract categorical properties from unstructured text, such as colours or materials. Requires WrangleWorks Account.\n\n## Migrated examples\n#### Extracting All Properties\n\n##### Recipe\n\n```yaml\nwrangles:\n - extract.properties:\n input: water bottles\n output: properties\n```\n\n
\n\n
\n\n##### Input Sample\n\n_No sample available._\n\n
\n\n
\n\n##### Output Sample\n\n| Products | Product Properties |\n| --- | --- |\n| Stainless Steel Blue Bottle | \\{'Colours': ['Blue'], 'Materials': ['Stainless Steel']\\} |\n| Plastic Yellow Bottle | \\{'Colours': ['Yellow'], 'Materials': ['Plastic']\\} |\n\n
\n\n
\n\n#### Extracting Colour\n\n##### Recipe\n\n```yaml\nwrangles:\n - extract.properties:\n input: water bottles\n output: properties\n property_type: colours # Optional\n```\n\n
\n\n
\n\n##### Input Sample\n\n_No sample available._\n\n
\n\n
\n\n##### Output Sample\n\n| Products | Product Colours |\n| --- | --- |\n| Stainless Steel Blue Bottle | ['Blue'] |\n| Plastic Yellow Bottle | ['Yellow'] |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py", + "title": "WranglesPY extract.properties implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/properties.md", + "title": "Existing extract.properties Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/extract/regex.json b/wrangles-docs/static/registry/contracts/extract/regex.json new file mode 100644 index 0000000..42c01e2 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/extract/regex.json @@ -0,0 +1,167 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "9aa0253a-4b70-4737-832c-964e15967289", + "wrangle_name": "regex", + "namespace": "extract", + "wrangle_key": "extract.regex", + "aliases": [], + "slug": "extract/regex", + "title": "Regex", + "description": "Extract matches or specific capture groups using regex.", + "status": "active", + "visibility": "public", + "tags": [ + "extract", + "regex" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.extract.regex", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the input column(s).", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "find", + "description": "Pattern to find using regex.", + "required": true, + "role": "option", + "schema": { + "type": "string" + } + }, + { + "name": "output", + "description": "Name of the output column(s).", + "required": true, + "role": "column-output", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "output_pattern", + "description": "Specifies the format to output matches and specific capture groups using backreferences (e.g., `\\1`, `\\2`). Default is to return entire matches. **Example**: For a regex pattern `r'(\\d+)\\s(\\w+)'` and `output_pattern = '\\2 \\1'`, with input `'120 volt'`, the output would be `'volt 120'`.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "first_element", + "description": "Get the first element from results.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "output_format", + "description": "Format of the extract output.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ], + "enum": [ + "list", + "columns", + "concatenate" + ] + } + }, + { + "name": "char", + "description": "Character to use when output_format is concatenate.", + "required": false, + "role": "option", + "runtime_default": ", ", + "schema": { + "type": "string" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Extract single values, matches, or specific capture groups using regex.\n\n## Migrated examples\n#### Extracting Number of Months From Range\n\n##### Recipe\n\n```yaml\nwrangles:\n - extract.regex:\n input: Product\n output: GPM\n find: \\d\\.?\\d? ?gpm\n```\n\n
\n\n
\n\n##### Input Sample\n\n_No sample available._\n\n
\n\n
\n\n##### Output Sample\n\n| GPM | Product |\n| --- | --- |\n| 3.4 gpm | 3.4 gpm water pump |\n| 2gpm | 2gpm water pump |\n\n
\n\n
\n\n#### Implementing output_pattern\n\n##### Recipe\n\n```yaml\nwrangles:\n - extract.regex:\n input: Product\n output: GPM\n find: (\\d\\.?\\d?) ?gpm\n output_pattern: \\1 Gallons Per Minute\n```\n\n
\n\n
\n\n##### Input Sample\n\n_No sample available._\n\n
\n\n
\n\n##### Output Sample\n\n| GPM | Product |\n| --- | --- |\n| 3.4 Gallons Per Minute | 3.4 gpm water pump for 5.5 gallon tank |\n| 2 Gallons Per Minute | 2gpm water pump for 2 gal tank |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py", + "title": "WranglesPY extract.regex implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/regex.md", + "title": "Existing extract.regex Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/filter.json b/wrangles-docs/static/registry/contracts/filter.json new file mode 100644 index 0000000..a622d44 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/filter.json @@ -0,0 +1,260 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "e3242acf-d204-433f-8373-205b77481131", + "wrangle_name": "filter", + "namespace": null, + "wrangle_key": "filter", + "aliases": [], + "slug": "filter", + "title": "Filter", + "description": "Filter the dataframe based on the contents. If multiple filters are specified, all must be correct. For complex filters, use the where parameter.", + "status": "active", + "visibility": "public", + "tags": [ + "select", + "filter" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.main.filter", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the column to filter on. If multiple are provided, all must match the criteria.", + "required": false, + "role": "column-selector", + "runtime_default": [], + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "equal", + "description": "Select rows where the values equal a given value.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "not_equal", + "description": "Select rows where the values do not equal a given value.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "is_in", + "description": "Select rows where the values are in a given list.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "not_in", + "description": "Select rows where the values are not in a given list.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "greater_than", + "description": "Select rows where the values are greater than a specified value. Does include the value itself.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "integer", + "number", + "null" + ] + } + }, + { + "name": "greater_than_equal_to", + "description": "Select rows where the values are greater than a specified value. Does include the value itself.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "integer", + "number", + "null" + ] + } + }, + { + "name": "less_than", + "description": "Select rows where the values are less than a specified value. Does not include the value itself.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "integer", + "number", + "null" + ] + } + }, + { + "name": "less_than_equal_to", + "description": "Select rows where the values are less than a specified value. Does include the value itself.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "integer", + "number", + "null" + ] + } + }, + { + "name": "between", + "description": "Value or list of values to filter that are in between two parameter values.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "array", + "null" + ] + } + }, + { + "name": "contains", + "description": "Select rows where the input contains the value. Allows regular expressions.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "not_contains", + "description": "Select rows where the input does not contain the value. Allows regular expressions.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "is_null", + "description": "If true, select all rows where the value is NULL. If false, where is not NULL.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "boolean", + "null" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Filter the dataframe based on the contents.\n\n## Migrated examples\n#### Filtering a Column\n\n##### Recipe\n\n```yaml\nwrangles:\n # Select only red fruits\n - filter:\n input: Color\n equal:\n - red\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Color | Fruit |\n| --- | --- |\n| red | Apple |\n| green | Apple |\n| orange | Orange |\n| red | Strawberry |\n\n
\n\n
\n\n##### Output Sample\n\n| Color | Fruit |\n| --- | --- |\n| red | Apple |\n| red | Strawberry |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py", + "title": "WranglesPY filter implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/filter.md", + "title": "Existing filter Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/format/dates.json b/wrangles-docs/static/registry/contracts/format/dates.json new file mode 100644 index 0000000..8df5030 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/format/dates.json @@ -0,0 +1,118 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "a3c15135-4f7a-4659-83fd-f657afa603c9", + "wrangle_name": "dates", + "namespace": "format", + "wrangle_key": "format.dates", + "aliases": [], + "slug": "format/dates", + "title": "Dates", + "description": "Format a date.", + "status": "active", + "visibility": "public", + "tags": [ + "format", + "dates" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.format.dates", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the input column.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "format", + "description": "String pattern to format date.", + "required": true, + "role": "option", + "schema": { + "type": "string" + } + }, + { + "name": "output", + "description": "Name of the output column.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Format a date into the desired pattern.\n\n## Migrated examples\n#### Changing The Format of a Date\n\n##### Recipe\n\n```yaml\nwrangles:\n - format.dates:\n input: Date\n output: Output Format\n format: '%Y-%m-%d' # must be wrapped by quotes \" or '\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Date |\n| --- |\n| 6/23/1912 |\n\n
\n\n
\n\n##### Output Sample\n\n| Date | Output Format |\n| --- | --- |\n| 6/23/1912 | 1912-06-23 |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py", + "title": "WranglesPY format.dates implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/dates.md", + "title": "Existing format.dates Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/format/pad.json b/wrangles-docs/static/registry/contracts/format/pad.json new file mode 100644 index 0000000..7d3f1a0 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/format/pad.json @@ -0,0 +1,146 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "76c19378-38f4-45aa-85d1-3cdf8f8aae29", + "wrangle_name": "pad", + "namespace": "format", + "wrangle_key": "format.pad", + "aliases": [], + "slug": "format/pad", + "title": "Pad", + "description": "Pad a string to a fixed length.", + "status": "active", + "visibility": "public", + "tags": [ + "format", + "pad" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.format.pad", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the input column.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "pad_length", + "description": "Length for the output.", + "required": true, + "role": "option", + "schema": { + "type": "integer" + } + }, + { + "name": "side", + "description": "Side from which to fill resulting string.", + "required": true, + "role": "option", + "schema": { + "type": "string" + } + }, + { + "name": "char", + "description": "The character to pad the input with.", + "required": true, + "role": "option", + "schema": { + "type": "string" + } + }, + { + "name": "output", + "description": "Name of the output column.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "skip_empty", + "description": "If true, skip padding for empty or whitespace-only values.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Pad a string to a fixed length\n\n## Migrated examples\n#### Adding Dashes to Part Numbers\n\n##### Recipe\n\n```yaml\nwrangles:\n - format.pad:\n input: Part Number\n pad_length: 5\n side: left\n char: \"-\"\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Part Number |\n| --- |\n| 0458 |\n| 396 |\n| 84 |\n| 98516 |\n\n
\n\n
\n\n##### Output Sample\n\n| Part Number |\n| --- |\n| -0458 |\n| --396 |\n| ---84 |\n| 98516 |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py", + "title": "WranglesPY format.pad implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/pad.md", + "title": "Existing format.pad Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/format/prefix.json b/wrangles-docs/static/registry/contracts/format/prefix.json new file mode 100644 index 0000000..f156066 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/format/prefix.json @@ -0,0 +1,132 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "c12f99b9-2363-4da7-8405-7c73b87906e5", + "wrangle_name": "prefix", + "namespace": "format", + "wrangle_key": "format.prefix", + "aliases": [], + "slug": "format/prefix", + "title": "Prefix", + "description": "Add a prefix to a column.", + "status": "active", + "visibility": "public", + "tags": [ + "format", + "prefix" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.format.prefix", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the input column.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "value", + "description": "Prefix value to add.", + "required": true, + "role": "option", + "schema": { + "type": [ + "string", + "integer", + "number" + ] + } + }, + { + "name": "output", + "description": "(Optional) Name of the output column.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "skip_empty", + "description": "Whether to skip empty values.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Add a prefix to a column.\n\n## Migrated examples\n#### Adding a Prefix to a String\n\n##### Recipe\n\n```yaml\nwrangles:\n - format.prefix:\n input: Data\n output: Prefix\n value: anti\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Data |\n| --- |\n| freeze |\n| dote |\n| hero |\n\n
\n\n
\n\n##### Output Sample\n\n| Data | Prefix |\n| --- | --- |\n| freeze | antifreeze |\n| dote | antidote |\n| hero | antihero |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py", + "title": "WranglesPY format.prefix implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/prefix.md", + "title": "Existing format.prefix Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/format/price-breaks.json b/wrangles-docs/static/registry/contracts/format/price-breaks.json new file mode 100644 index 0000000..fa41475 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/format/price-breaks.json @@ -0,0 +1,104 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": null, + "wrangle_name": "price_breaks", + "namespace": "format", + "wrangle_key": "format.price_breaks", + "aliases": [], + "slug": "format/price-breaks", + "title": "Format Price Breaks", + "description": "Expand non-empty price-break cells into paired category and value columns.", + "status": "active", + "visibility": "public", + "tags": [ + "format", + "price-breaks" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.format.price_breaks", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name, index, or list of input columns.", + "required": true, + "role": "column-selector", + "schema": { + "type": "array" + } + }, + { + "name": "categoryLabel", + "description": "Prefix for output columns that identify the source price-break category.", + "required": true, + "role": "option", + "schema": { + "type": "string" + } + }, + { + "name": "valueLabel", + "description": "Prefix for output columns that contain the corresponding price-break value.", + "required": true, + "role": "option", + "schema": { + "type": "string" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "## Behavior\n\nExpand non-empty price-break cells into paired category and value columns.\n\nThis first-pass guidance is derived from the callable signature.", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py", + "title": "WranglesPY format.price_breaks implementation" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/format/remove-duplicates.json b/wrangles-docs/static/registry/contracts/format/remove-duplicates.json new file mode 100644 index 0000000..4c0f4cb --- /dev/null +++ b/wrangles-docs/static/registry/contracts/format/remove-duplicates.json @@ -0,0 +1,119 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "283b9e78-b2b2-43d0-844f-9842c33120aa", + "wrangle_name": "remove_duplicates", + "namespace": "format", + "wrangle_key": "format.remove_duplicates", + "aliases": [], + "slug": "format/remove-duplicates", + "title": "Remove Duplicates", + "description": "Remove duplicates from a list. Preserves input order.", + "status": "active", + "visibility": "public", + "tags": [ + "format", + "remove-duplicates" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.format.remove_duplicates", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the input column.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "output", + "description": "Name of the output column.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "ignore_case", + "description": "Ignore case when removing duplicates.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Remove duplicate values in a list.\n\n## Migrated examples\n#### Removing Duplicates From a List\n\n##### Recipe\n\n```yaml\nwrangles:\n - format.remove_duplicates:\n input: Attack of the Clones\n output: Commander\n where: Rank = Commander\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Rank | Attack of the Clones |\n| --- | --- |\n| Commander | ['Cody', 'Cody', 'Cody'] |\n| Captain | ['Rex', 'Rex', 'Rex'] |\n\n
\n\n
\n\n##### Output Sample\n\n| Rank | Commander | Attack of the Clones |\n| --- | --- | --- |\n| Commander | ['Cody'] | ['Cody', 'Cody', 'Cody'] |\n| Captain | | ['Rex', 'Rex', 'Rex'] |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py", + "title": "WranglesPY format.remove_duplicates implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/remove-duplicates.md", + "title": "Existing format.remove_duplicates Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/format/significant-figures.json b/wrangles-docs/static/registry/contracts/format/significant-figures.json new file mode 100644 index 0000000..6ad3522 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/format/significant-figures.json @@ -0,0 +1,119 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "a359f72a-5250-4dd8-84f6-8a8173bee0f6", + "wrangle_name": "significant_figures", + "namespace": "format", + "wrangle_key": "format.significant_figures", + "aliases": [], + "slug": "format/significant-figures", + "title": "Significant Figures", + "description": "Format a value to a specific number of significant figures.", + "status": "active", + "visibility": "public", + "tags": [ + "format", + "significant-figures" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.format.significant_figures", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the input column.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "significant_figures", + "description": "Number of significant figures to format to. Default is 3.", + "required": false, + "role": "option", + "runtime_default": 3, + "schema": { + "type": "integer" + } + }, + { + "name": "output", + "description": "Name of the output column.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Format a value to a specific number of significant figures\n\n## Migrated examples\n#### Rounding to Significant Figures\n\n##### Recipe\n\n```yaml\nwrangles:\n - format.significant_figures:\n input: Data\n significant_figures: 2\n output: Data to 2 Figures\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Data |\n| --- |\n| 1.25 |\n| 12.3 |\n| 55.6 |\n\n
\n\n
\n\n##### Output Sample\n\n| Data | Data to 2 Figures |\n| --- | --- |\n| 1.25 | 1.2 |\n| 12.3 | 12 |\n| 55.6 | 55 |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py", + "title": "WranglesPY format.significant_figures implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/significant-figures.md", + "title": "Existing format.significant_figures Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/format/suffix.json b/wrangles-docs/static/registry/contracts/format/suffix.json new file mode 100644 index 0000000..6d2c67d --- /dev/null +++ b/wrangles-docs/static/registry/contracts/format/suffix.json @@ -0,0 +1,132 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "8d127060-ba2d-4934-897f-07662e01e40b", + "wrangle_name": "suffix", + "namespace": "format", + "wrangle_key": "format.suffix", + "aliases": [], + "slug": "format/suffix", + "title": "Suffix", + "description": "Add a suffix to a column.", + "status": "active", + "visibility": "public", + "tags": [ + "format", + "suffix" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.format.suffix", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the input column.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "value", + "description": "Suffix value to add.", + "required": true, + "role": "option", + "schema": { + "type": [ + "string", + "integer", + "number", + "array" + ] + } + }, + { + "name": "output", + "description": "(Optional) Name of the output column.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "skip_empty", + "description": "Whether to skip empty values.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Add a suffix to a column\n\n## Migrated examples\n#### Adding a Suffix to a String\n\n##### Recipe\n\n```yaml\nwrangles:\n - format.suffix:\n input: Data\n output: Suffix\n value: ic\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Data |\n| --- |\n| sto |\n| hero |\n| icon |\n\n
\n\n
\n\n##### Output Sample\n\n| Data | Suffix |\n| --- | --- |\n| sto | stoic |\n| hero | heroic |\n| icon | iconic |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py", + "title": "WranglesPY format.suffix implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/suffix.md", + "title": "Existing format.suffix Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/format/trim.json b/wrangles-docs/static/registry/contracts/format/trim.json new file mode 100644 index 0000000..306db7d --- /dev/null +++ b/wrangles-docs/static/registry/contracts/format/trim.json @@ -0,0 +1,109 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "af16b3c1-c230-4868-8ebe-f574904a0c76", + "wrangle_name": "trim", + "namespace": "format", + "wrangle_key": "format.trim", + "aliases": [], + "slug": "format/trim", + "title": "Trim", + "description": "Remove excess whitespace at the start and end of text.", + "status": "active", + "visibility": "public", + "tags": [ + "format", + "trim" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.format.trim", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the input column.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "output", + "description": "Name of the output column.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Remove excess whitespace at the start and end of text. Can accept multiple columns.\n\n:::note\nNon-string values pass through unaltered.\n:::\n\n## Migrated examples\n#### Trimming a String\n\n##### Recipe\n\n```yaml\nwrangles:\n - format.trim:\n input:\n - col1\n output: col1 trimmed\n```\n\n
\n\n
\n\n##### Input Sample\n\n| col1 |\n| --- |\n| ` Hello World ` |\n\n
\n\n
\n\n##### Output Sample\n\n| col1 | col1 trimmed |\n| --- | --- |\n| Hello World | Hello World |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py", + "title": "WranglesPY format.trim implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/trim.md", + "title": "Existing format.trim Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/generate/ai.json b/wrangles-docs/static/registry/contracts/generate/ai.json new file mode 100644 index 0000000..2335a76 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/generate/ai.json @@ -0,0 +1,237 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "12c31c6c-cade-484d-84ba-7f302bf6af52", + "wrangle_name": "ai", + "namespace": "generate", + "wrangle_key": "generate.ai", + "aliases": [], + "slug": "generate/ai", + "title": "Ai", + "description": "Generate structured AI output for each recipe row.", + "status": "active", + "visibility": "public", + "tags": [ + "ai", + "generate" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.generate.ai", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "api_key", + "description": "OpenAI-compatible API key.", + "required": true, + "role": "credential", + "schema": { + "type": "string" + } + }, + { + "name": "output", + "description": "Target schema; string/array shorthands are expanded automatically.", + "required": true, + "role": "column-output", + "schema": { + "type": [ + "string", + "array", + "object" + ] + } + }, + { + "name": "input", + "description": "Column(s) to concatenate into the prompt (defaults to all columns).", + "required": false, + "role": "column-selector", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "model", + "description": "Responses model name (e.g. gpt-5-mini).", + "required": false, + "role": "option", + "runtime_default": "gpt-5", + "schema": { + "type": "string" + } + }, + { + "name": "threads", + "description": "Maximum concurrent requests (default 20).", + "required": false, + "role": "option", + "runtime_default": 20, + "schema": { + "type": "integer" + } + }, + { + "name": "timeout", + "description": "Per-request timeout in seconds.", + "required": false, + "role": "option", + "runtime_default": 90, + "schema": { + "type": "integer" + } + }, + { + "name": "retries", + "description": "Number of retry attempts on failure.", + "required": false, + "role": "option", + "runtime_default": 0, + "schema": { + "type": "integer" + } + }, + { + "name": "messages", + "description": "Optional extra messages forwarded to the inner generate helper.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "array", + "object", + "null" + ] + } + }, + { + "name": "url", + "description": "Override for the OpenAI-compatible endpoint.", + "required": false, + "role": "option", + "runtime_default": "https://api.openai.com/v1/responses", + "schema": { + "type": "string" + } + }, + { + "name": "strict", + "description": "Enforce JSON-schema validation on the response.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "web_search", + "description": "Enable DuckDuckGo context lookup per row.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "reasoning", + "description": "Responses API reasoning options (forwarded verbatim).", + "required": false, + "role": "option", + "runtime_default": { + "effort": "low" + }, + "schema": { + "type": [ + "string", + "object" + ] + } + }, + { + "name": "previous_response", + "description": "Chain responses by reusing previous_response_id for field-by-field calls.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "summary", + "description": "Request summary text to be merged into the output.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Generate structured AI output for each recipe row.\n\n## Migrated examples\n#### Generate Structured Product Data\n\nThis template generates a category from a product description. AI-generated values can vary by model and request.\n\n##### Recipe\n\n```yaml\nwrangles:\n - generate.ai:\n input:\n - Product Description\n output:\n Category:\n type: string\n description: Broad product category\n api_key: Your OpenAI-compatible API key\n model: gpt-5-mini\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Product Description |\n| --- |\n| Stainless steel insulated water bottle, 750 ml |\n\n
\n\n
\n\n##### Output Sample\n\n| Product Description | Category |\n| --- | --- |\n| Stainless steel insulated water bottle, 750 ml | Drinkware |\n\n
\n\n
\n\n_Template based on the documented parameters; no published source example is currently available._", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/generate.py", + "title": "WranglesPY generate.ai implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/ai/_sources/ai.md", + "title": "Existing generate.ai Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/huggingface.json b/wrangles-docs/static/registry/contracts/huggingface.json new file mode 100644 index 0000000..68170e0 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/huggingface.json @@ -0,0 +1,140 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "ae12cf20-4934-428f-84a9-a6898cb7ffe0", + "wrangle_name": "huggingface", + "namespace": null, + "wrangle_key": "huggingface", + "aliases": [], + "slug": "huggingface", + "title": "Huggingface", + "description": "Use a model from huggingface.", + "status": "active", + "visibility": "public", + "tags": [ + "ai", + "huggingface" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.main.huggingface", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the input column.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "api_token", + "description": "Huggingface API Token.", + "required": true, + "role": "option", + "schema": { + "type": "string" + } + }, + { + "name": "model", + "description": "Name of the model to use. e.g. facebook/bart-large-cnn.", + "required": true, + "role": "option", + "schema": { + "type": "string" + } + }, + { + "name": "output", + "description": "Name of the output column. If not provided, will overwrite the input column.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "parameters", + "description": "Optionally, provide additional parameters to define the model behaviour.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "object", + "null" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Use a model from huggingface\n\n## Migrated examples\n#### Summarize Product Descriptions\n\nThis template uses a Hugging Face summarization model. The exact response shape and text depend on the selected model.\n\n##### Recipe\n\n```yaml\nwrangles:\n - huggingface:\n input:\n - Product Description\n output:\n - Summary\n api_token: Your Hugging Face API token\n model: facebook/bart-large-cnn\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Product Description |\n| --- |\n| A cordless drill with two batteries, a charger, and a compact carrying case. |\n\n
\n\n
\n\n##### Output Sample\n\n| Product Description | Summary |\n| --- | --- |\n| A cordless drill with two batteries, a charger, and a compact carrying case. | Cordless drill kit with batteries, charger, and case. |\n\n
\n\n
\n\n_Template based on the documented parameters; no published source example is currently available._", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py", + "title": "WranglesPY huggingface implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/ai/_sources/huggingface.md", + "title": "Existing huggingface Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/log.json b/wrangles-docs/static/registry/contracts/log.json new file mode 100644 index 0000000..3fd2af6 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/log.json @@ -0,0 +1,160 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "6177808e-aa2d-4d0b-8385-858b16948a5d", + "wrangle_name": "log", + "namespace": null, + "wrangle_key": "log", + "aliases": [], + "slug": "log", + "title": "Log", + "description": "Log the current status of the dataframe.", + "status": "active", + "visibility": "public", + "tags": [ + "utility", + "log" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.main.log", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "columns", + "description": "(Optional, default all columns) List of specific columns to log.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "array", + "null" + ] + } + }, + { + "name": "write", + "description": "(Optional) Allows for an intermediate output to a file/dataframe/database etc.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "array", + "null" + ], + "minItems": 1, + "items": { + "$ref": "#/$defs/write/items" + } + } + }, + { + "name": "warning", + "description": "Log a warning to the console.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "info", + "description": "Log info to the console.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "log_data", + "description": "Whether to log a sample of the contents of the dataframe. Default True if not logging to a write, error, warning or info. Default False otherwise.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "boolean", + "null" + ] + } + }, + { + "name": "error", + "description": "Log an error to the console.", + "required": false, + "role": "option", + "schema": { + "type": "string" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Print the current status of the dataframe. Only a sample of rows is logged.\n\n## Migrated examples\n#### Logging All Columns to Terminal\n\n##### Recipe\n\n```yaml\nwrangles:\n - log: {}\n```\n\n
\n\n
\n\n##### Input Sample\n\n_Logging side-effect; no tabular input sample._\n\n
\n\n
\n\n##### Output Sample\n\n_Logs a sample of rows or status information to the configured destination._\n\n
\n\n
\n\n#### Logging Specific Columns to Terminal\n\n##### Recipe\n\n```yaml\nwrangles:\n - log:\n columns:\n - column1\n - column2\n```\n\n
\n\n
\n\n##### Input Sample\n\n_Logging side-effect; no tabular input sample._\n\n
\n\n
\n\n##### Output Sample\n\n_Logs a sample of rows or status information to the configured destination._\n\n
\n\n
\n\n#### Logging to a File\n\n##### Recipe\n\n```yaml\nwrangles:\n - log:\n write:\n - file:\n name: output/filepath\n columns:\n - column 1\n - column 2\n```\n\n
\n\n
\n\n##### Input Sample\n\n_Logging side-effect; no tabular input sample._\n\n
\n\n
\n\n##### Output Sample\n\n_Logs a sample of rows or status information to the configured destination._\n\n
\n\n
\n\n#### Native Variables\n\n| Variable | Function |\n| --- | --- |\n| `${column_count}` | Number of columns. |\n| `${columns}` | List of all columns. |\n| `${df}` | Current dataframe. |\n| `${row_count}` | Number of visible rows processed in each batch. |", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py", + "title": "WranglesPY log implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/utility/_sources/log.md", + "title": "Existing log Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/lookup.json b/wrangles-docs/static/registry/contracts/lookup.json new file mode 100644 index 0000000..109063d --- /dev/null +++ b/wrangles-docs/static/registry/contracts/lookup.json @@ -0,0 +1,145 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "b3339193-d1cc-4c89-8ed6-901efa6d81be", + "wrangle_name": "lookup", + "namespace": null, + "wrangle_key": "lookup", + "aliases": [], + "slug": "lookup", + "title": "Lookup", + "description": "Lookup values from a saved lookup wrangle.", + "status": "active", + "visibility": "public", + "tags": [ + "lookup" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.main.lookup", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the column(s) to lookup.", + "required": true, + "role": "column-selector", + "schema": { + "type": "string" + } + }, + { + "name": "output", + "description": "Name of the output column(s). When n is provided and the output list length equals n, each output column receives the corresponding match. A single output containing a wildcard (*) is expanded into n columns, e.g. \"Top *\" with n: 3 becomes \"Top 1\", \"Top 2\", \"Top 3\".", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "model_id", + "description": "The model_id to use lookup against.", + "required": false, + "role": "model-reference", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "lookup_mode", + "description": "How to perform lookups. 'by_row' (default): lookup each row individually. 'by_dataframe': lookup unique values once, copy results to all rows. 'by_matrix': lookup once per matrix permutation.", + "required": false, + "role": "option", + "runtime_default": "by_row", + "schema": { + "type": "string", + "enum": [ + "by_row", + "by_matrix", + "by_dataframe" + ] + } + }, + { + "name": "n", + "description": "Number of matches to return per input value. When the output list length equals n, each output column receives the corresponding match. Otherwise all n matches are stored as a list in each output column.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "integer", + "null" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Look up data from a saved Lookup Wrangle. Data is output as a dictionary if an output is not specified or the output does not match any columns in the lookup. If specific lookup columns are named in the output, they will be output as individual columns.\n\n## Migrated examples\n#### State Example\n\n##### Recipe\n\n```yaml\nwrangles:\n - lookup:\n input: State\n output:\n - Abbreviation\n model_id: 55555555-5555-5555\n```\n\n
\n\n
\n\n##### Input Sample\n\n| State |\n| --- |\n| Texas |\n| New York |\n| Virginia |\n\n
\n\n
\n\n##### Output Sample\n\n| Abbreviation |\n| --- |\n| TX |\n| NY |\n| VA |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py", + "title": "WranglesPY lookup implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/lookup/_sources/lookup.md", + "title": "Existing lookup Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/math.json b/wrangles-docs/static/registry/contracts/math.json new file mode 100644 index 0000000..28fed35 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/math.json @@ -0,0 +1,100 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "494b11ad-00c1-4748-8b93-6bec982f4fec", + "wrangle_name": "math", + "namespace": null, + "wrangle_key": "math", + "aliases": [], + "slug": "math", + "title": "Math", + "description": "Apply a mathematical calculation.", + "status": "active", + "visibility": "public", + "tags": [ + "compute", + "math" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.main.math", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "The mathematical expression using column names. e.g. column1 * column2 + column3. Note: spaces within column names are replaced by underscores (_).", + "required": true, + "role": "column-selector", + "schema": { + "type": "string" + } + }, + { + "name": "output", + "description": "The column to output the results to.", + "required": true, + "role": "column-output", + "schema": { + "type": "string" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Apply mathematical calculations to columns. Also called as `maths`.\n\n:::info\nSpaces within column headers are replaced with underscores automatically. Account for this when writing expressions in `input`.\n:::\n\n## Migrated examples\n#### Square Root Example\n\n##### Recipe\n\n```yaml\nwrangles:\n - math:\n input: sqrt(Values)\n output: Square Root\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Values |\n| --- |\n| 4 |\n| 9 |\n| 16 |\n\n
\n\n
\n\n##### Output Sample\n\n| Values | Square Root |\n| --- | --- |\n| 4 | 2 |\n| 9 | 3 |\n| 16 | 4 |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py", + "title": "WranglesPY math implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compute/_sources/math.md", + "title": "Existing math Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/maths.json b/wrangles-docs/static/registry/contracts/maths.json new file mode 100644 index 0000000..e76049d --- /dev/null +++ b/wrangles-docs/static/registry/contracts/maths.json @@ -0,0 +1,94 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": null, + "wrangle_name": "maths", + "namespace": null, + "wrangle_key": "maths", + "aliases": [], + "slug": "maths", + "title": "Maths", + "description": "Deprecated alias for `math`; evaluate an expression and write its result to an output column.", + "status": "deprecated", + "visibility": "public", + "tags": [ + "maths" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.main.maths", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name, index, or list of input columns.", + "required": true, + "role": "column-selector", + "schema": { + "type": "string" + } + }, + { + "name": "output", + "description": "Name or list of output columns.", + "required": true, + "role": "column-output", + "schema": { + "type": "string" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "## Behavior\n\nDeprecated alias for `math`; evaluate an expression and write its result to an output column.\n\nThis first-pass guidance is derived from the callable signature.", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py", + "title": "WranglesPY maths implementation" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/matrix.json b/wrangles-docs/static/registry/contracts/matrix.json new file mode 100644 index 0000000..8c3eb7d --- /dev/null +++ b/wrangles-docs/static/registry/contracts/matrix.json @@ -0,0 +1,118 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": null, + "wrangle_name": "matrix", + "namespace": null, + "wrangle_key": "matrix", + "aliases": [], + "slug": "matrix", + "title": "Matrix", + "description": "Apply a matrix of wrangles to the dataframe. This will run the wrangles for each combination of the variables.", + "status": "active", + "visibility": "public", + "tags": [ + "utility", + "matrix" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.main.matrix", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "variables", + "description": "A dictionary of variables to pass to the wrangle. The key is the variable name and the value is a list of values.", + "required": true, + "role": "variables", + "schema": { + "type": "object" + } + }, + { + "name": "wrangles", + "description": "The wrangles to apply to the dataframe. Each wrangle will be run for each combination of the variables.", + "required": true, + "role": "nested-wrangles", + "schema": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/$defs/wrangles/items" + } + } + }, + { + "name": "strategy", + "description": "Determines how to combine variables when there are multiple. loop (default) iterates over each set of variables, repeating shorter lists until the longest is completed. permutations uses the combination of all variables against all other variables.", + "required": false, + "role": "option", + "runtime_default": "loop", + "schema": { + "type": "string", + "enum": [ + "permutations", + "loop" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Apply a matrix of wrangles to the dataframe. Each wrangle runs for the configured combinations of variables, including recipe variables and variables declared by the `variables` parameter.\n\nSee the [Matrix connector](/python/connectors/matrix) for the connector equivalent.\n\n## Migrated examples\n#### Use Hardcoded Variables\n\nRun a custom function once for each configured variable value.\n\n##### Recipe\n\n```yaml\nwrangles:\n - matrix:\n variables:\n var: [A, B, C]\n wrangles:\n - custom.test_fn:\n input: Part Code\n output: Part Code ${var}\n value: ${var}\n```\n\n```python\ndef test_fn(part_code, value):\n return part_code + value\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Part Code |\n| --- |\n| 6202 |\n| br549 |\n| 554-114 |\n| 554-112 |\n\n
\n\n
\n\n##### Output Sample\n\n| Part Code | Part Code A | Part Code B | Part Code C |\n| --- | --- | --- | --- |\n| 6202 | 6202A | 6202B | 6202C |\n| br549 | br549A | br549B | br549C |\n| 554-114 | 554-114A | 554-114B | 554-114C |\n| 554-112 | 554-112A | 554-112B | 554-112C |\n\n
\n\n
\n\n#### Use Unique Variables Per Row\n\nThis example runs `extract.custom` once for each unique model ID.\n\n##### Recipe\n\n```yaml\nwrangles:\n - matrix:\n variables:\n model_id: set(Model ID)\n wrangles:\n - extract.custom:\n input: Description\n output: Extracted Values\n model_id: ${model_id}\n where: \"[Model ID] = ?\"\n where_params:\n - ${model_id}\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Description | Model ID |\n| --- | --- |\n| The SKF 6202 bearing is the best bearing in the world | xxxxxxxx-xxxx-xxxx |\n| The Timken 6102 bearing is indestructible | yyyyyyyy-yyyy-yyyy |\n| The Milwaukee impact has 1200ft-lbs of torque | zzzzzzzz-zzzz-zzzz |\n\n
\n\n
\n\n##### Output Sample\n\n| Description | Model ID | Extracted Values |\n| --- | --- | --- |\n| The SKF 6202 bearing is the best bearing in the world | xxxxxxxx-xxxx-xxxx | 6202 |\n| The Timken 6102 bearing is indestructible | yyyyyyyy-yyyy-yyyy | indestructible |\n| The Milwaukee impact has 1200ft-lbs of torque | zzzzzzzz-zzzz-zzzz | 1200ft-lbs |\n\n
\n\n
\n\n#### Native Variables\n\n| Variable | Function |\n| --- | --- |\n| `${column_count}` | Number of columns. |\n| `${columns}` | List of all columns. |\n| `${df}` | Current dataframe. |\n| `${row_count}` | Number of visible rows processed in each batch. |", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py", + "title": "WranglesPY matrix implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/utility/_sources/matrix.md", + "title": "Existing matrix Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/merge/coalesce.json b/wrangles-docs/static/registry/contracts/merge/coalesce.json new file mode 100644 index 0000000..a0d56db --- /dev/null +++ b/wrangles-docs/static/registry/contracts/merge/coalesce.json @@ -0,0 +1,104 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "25c1a60d-fa48-4b9a-8c03-0921d5b31049", + "wrangle_name": "coalesce", + "namespace": "merge", + "wrangle_key": "merge.coalesce", + "aliases": [], + "slug": "merge/coalesce", + "title": "Coalesce", + "description": "Take the first non-empty value from a series of columns or lists.", + "status": "active", + "visibility": "public", + "tags": [ + "merge", + "coalesce" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.merge.coalesce", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "List of input columns or a single column containing lists.", + "required": true, + "role": "column-selector", + "schema": { + "type": "array" + } + }, + { + "name": "output", + "description": "Name of the output columns. This is required if multiple input columns are provided.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Take the first non-empty value from a series of columns.\n\n## Migrated examples\n#### Coalescing 3 Columns\n\n##### Recipe\n\n```yaml\nwrangles:\n - merge.coalesce:\n input:\n - Col1\n - Col2\n - Col3\n output: Output Col\n where: Col2 = E\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Col1 | Col2 | Col3 |\n| --- | --- | --- |\n| A | B | C |\n| D | E | F |\n| G | H | I |\n\n
\n\n
\n\n##### Output Sample\n\n| Col1 | Col2 | Col3 | Output Col |\n| --- | --- | --- | --- |\n| A | B | C | |\n| D | E | F | D |\n| G | H | I | |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/merge.py", + "title": "WranglesPY merge.coalesce implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/merge/_sources/coalesce.md", + "title": "Existing merge.coalesce Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/merge/concatenate.json b/wrangles-docs/static/registry/contracts/merge/concatenate.json new file mode 100644 index 0000000..89ea18a --- /dev/null +++ b/wrangles-docs/static/registry/contracts/merge/concatenate.json @@ -0,0 +1,125 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "6ff76728-e1f6-4d3d-8946-6aa3b7524b3f", + "wrangle_name": "concatenate", + "namespace": "merge", + "wrangle_key": "merge.concatenate", + "aliases": [], + "slug": "merge/concatenate", + "title": "Concatenate", + "description": "Concatenate a list of columns or a list within a single column.", + "status": "active", + "visibility": "public", + "tags": [ + "merge", + "concatenate" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.merge.concatenate", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Either a single column name or list of columns.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "output", + "description": "Name of the output column.", + "required": true, + "role": "column-output", + "schema": { + "type": "string" + } + }, + { + "name": "char", + "description": "(Optional) Character to add between successive values.", + "required": false, + "role": "option", + "runtime_default": ",", + "schema": { + "type": "string" + } + }, + { + "name": "skip_empty", + "description": "Whether to skip empty values, defaults to false.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean", + "desription": "Whether to skip empty values" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "If the input is a list of columns, concatenate multiple columns into one as a delimited string. If the input is a single column, concatenate a list within that column into a delimited string.\n\n## Migrated examples\n#### Concatenating 3 Columns\n\n##### Recipe\n\n```yaml\n# Using concatenate to combine multiple columns\nwrangles:\n - merge.concatenate:\n input:\n - Col1\n - Col2\n - Col3\n output: Join Col\n char: ', '\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Col1 | Col2 | Col3 |\n| --- | --- | --- |\n| A | B | C |\n\n
\n\n
\n\n##### Output Sample\n\n| Join Col |\n| --- |\n| A, B, C |\n\n
\n\n
\n\n#### Concatenating a Single Column\n\n##### Recipe\n\n```yaml\n# Using concatenate to join a column that is a list\nwrangles:\n - merge.concatenate:\n input: Col1\n output: Join List\n char: ' '\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Col1 |\n| --- |\n| ['A', 'B', 'C'] |\n\n
\n\n
\n\n##### Output Sample\n\n| Join List |\n| --- |\n| A B C |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/merge.py", + "title": "WranglesPY merge.concatenate implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/merge/_sources/concatenate.md", + "title": "Existing merge.concatenate Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/merge/dictionaries.json b/wrangles-docs/static/registry/contracts/merge/dictionaries.json new file mode 100644 index 0000000..d58b4fa --- /dev/null +++ b/wrangles-docs/static/registry/contracts/merge/dictionaries.json @@ -0,0 +1,110 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "93e27737-e966-4ba9-8777-4e96724ebfc4", + "wrangle_name": "dictionaries", + "namespace": "merge", + "wrangle_key": "merge.dictionaries", + "aliases": [], + "slug": "merge/dictionaries", + "title": "Dictionaries", + "description": "Take dictionaries in multiple columns and merge them to a single dictionary.", + "status": "active", + "visibility": "public", + "tags": [ + "merge", + "dictionaries" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.merge.dictionaries", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "List of input columns.", + "required": true, + "role": "column-selector", + "schema": { + "type": "array" + } + }, + { + "name": "output", + "description": "Name of the output column.", + "required": true, + "role": "column-output", + "schema": { + "type": "string" + } + }, + { + "name": "skip_empty", + "description": "Whether to skip empty dictionaries when merging.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Take dictionaries in multiple columns and merge them to a single dictionary.\n\n:::note\nFor duplicate keys, the last key in the input list takes precedence in the merged dictionary.\n:::\n\n## Migrated examples\n#### Using Named Columns\n\n##### Recipe\n\n```yaml\nwrangles:\n - merge.dictionaries:\n input:\n - Dict 1\n - Dict 2\n output: Merged\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Dict 1 | Dict 2 |\n| --- | --- |\n| \\{'First': 'One'\\} | \\{'Second': 'Two'\\} |\n\n
\n\n
\n\n##### Output Sample\n\n| Merged |\n| --- |\n| \\{'First': 'One', 'Second': 'Two'\\} |\n\n
\n\n
\n\n#### Using a Wildcard (*)\n\n##### Recipe\n\n```yaml\n# Using a Wildcard (*)\nwrangles:\n - merge.dictionaries:\n input: Dict *\n output: Merged\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Dict 1 | Dict 2 |\n| --- | --- |\n| \\{'First': 'One'\\} | \\{'Second': 'Two'\\} |\n\n
\n\n
\n\n##### Output Sample\n\n| Merged |\n| --- |\n| \\{'First': 'One', 'Second': 'Two'\\} |\n\n
\n\n
\n\n#### Using a Wildcard (*) With Not Columns\n\n##### Recipe\n\n```yaml\n# Using a Wildcard (*)\nwrangles:\n - merge.dictionaries:\n input:\n - Dict *\n - -Dict 2\n output: Merged\n```\n\nNote the extra dash in front of `Dict 2` excludes that column from the wildcard selection.\n\n
\n\n
\n\n##### Input Sample\n\n| Dict 1 | Dict 2 | Dict 3 |\n| --- | --- | --- |\n| \\{'First': 'One'\\} | \\{'Second': 'Two'\\} | \\{'Third': 'Three'\\} |\n\n
\n\n
\n\n##### Output Sample\n\n| Merged |\n| --- |\n| \\{'First': 'One', 'Third': 'Three'\\} |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/merge.py", + "title": "WranglesPY merge.dictionaries implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/merge/_sources/dictionaries.md", + "title": "Existing merge.dictionaries Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/merge/key-value-pairs.json b/wrangles-docs/static/registry/contracts/merge/key-value-pairs.json new file mode 100644 index 0000000..6be0b41 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/merge/key-value-pairs.json @@ -0,0 +1,110 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "8a2cd37c-8ef7-4b05-8264-36512f5dd837", + "wrangle_name": "key_value_pairs", + "namespace": "merge", + "wrangle_key": "merge.key_value_pairs", + "aliases": [], + "slug": "merge/key-value-pairs", + "title": "Key Value Pairs", + "description": "Create a dictionary from keys and values in paired columns e.g. COLUMN_NAME_1, COLUMN_VALUE_1, COLUMN_NAME_2, COLUMN_VALUE_2 ...", + "status": "active", + "visibility": "public", + "tags": [ + "merge", + "key-value-pairs" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.merge.key_value_pairs", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Matched pairs of key and value columns.", + "required": true, + "role": "column-selector", + "schema": { + "type": "object" + } + }, + { + "name": "output", + "description": "Name of the output column.", + "required": true, + "role": "column-output", + "schema": { + "type": "string" + } + }, + { + "name": "skip_empty", + "description": "Whether to skip empty keys or values when creating the dictionary.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Create a dictionary from keys and values in paired columns.\n\n## Migrated examples\n#### Using Named Columns\n\n##### Recipe\n\n```yaml\nwrangles:\n - merge.key_value_pairs:\n input:\n Letter: Number\n output: Pairs\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Letter | Number |\n| --- | --- |\n| A | 1 |\n| B | 2 |\n| C | 3 |\n\n
\n\n
\n\n##### Output Sample\n\n| Pairs |\n| --- |\n| \\{'A': 1\\} |\n| \\{'B': 2\\} |\n| \\{'C': 3\\} |\n\n
\n\n
\n\n#### Using a wildcard (*)\n\n##### Recipe\n\n```yaml\n# Using a Wildcard (*)\nwrangles:\n - merge.key_value_pairs:\n input:\n key*: value*\n output: Object\n```\n\n
\n\n
\n\n##### Input Sample\n\n| key 1 | key 2 | value 1 | value 2 |\n| --- | --- | --- | --- |\n| A | One | a | First |\n| B | Two | b | Second |\n| C | three | c | Third |\n\n
\n\n
\n\n##### Output Sample\n\n| Object |\n| --- |\n| \\{'A': 'a', 'One': 'First'\\} |\n| \\{'B': 'b', 'Two': 'Second'\\} |\n| \\{'C': 'c', 'three': 'Third'\\} |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/merge.py", + "title": "WranglesPY merge.key_value_pairs implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/merge/_sources/key-value-pairs.md", + "title": "Existing merge.key_value_pairs Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/merge/lists.json b/wrangles-docs/static/registry/contracts/merge/lists.json new file mode 100644 index 0000000..a9a1c01 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/merge/lists.json @@ -0,0 +1,130 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "d9978f00-b3d4-4583-884e-a53b98a43e9a", + "wrangle_name": "lists", + "namespace": "merge", + "wrangle_key": "merge.lists", + "aliases": [], + "slug": "merge/lists", + "title": "Lists", + "description": "Take lists in multiple columns and merge them to a single list.", + "status": "active", + "visibility": "public", + "tags": [ + "merge", + "lists" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.merge.lists", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "List of input columns.", + "required": true, + "role": "column-selector", + "schema": { + "type": "array" + } + }, + { + "name": "output", + "description": "Name of the output column.", + "required": true, + "role": "column-output", + "schema": { + "type": "string" + } + }, + { + "name": "remove_duplicates", + "description": "Whether to remove duplicates from the created list.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "ignore_case", + "description": "Ignore case when removing duplicates.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "include_empty", + "description": "Whether to include empty values in the created list.", + "required": false, + "role": "option", + "runtime_default": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Take lists in multiple columns and merge them to a single list.\n\n## Migrated examples\n#### Merging Two Lists\n\n##### Recipe\n\n```yaml\nwrangles:\n - merge.lists:\n input:\n - col1\n - col2\n output: Combined Col\n remove_duplicates: false\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Col1 | Col2 |\n| --- | --- |\n| ['A', 'B'] | ['D', 'E'] |\n\n
\n\n
\n\n##### Output Sample\n\n| Combined Col |\n| --- |\n| ['A', 'B', 'D', 'E'] |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/merge.py", + "title": "WranglesPY merge.lists implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/merge/_sources/lists.md", + "title": "Existing merge.lists Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/merge/to-dict.json b/wrangles-docs/static/registry/contracts/merge/to-dict.json new file mode 100644 index 0000000..fee8ae5 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/merge/to-dict.json @@ -0,0 +1,110 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "9b869210-0d89-403b-8409-7cecdb5f9c7c", + "wrangle_name": "to_dict", + "namespace": "merge", + "wrangle_key": "merge.to_dict", + "aliases": [], + "slug": "merge/to-dict", + "title": "To Dict", + "description": "Take multiple columns and merge them to a dictionary (aka object) using the column headers as keys.", + "status": "active", + "visibility": "public", + "tags": [ + "merge", + "to-dict" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.merge.to_dict", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "List of input columns.", + "required": true, + "role": "column-selector", + "schema": { + "type": "array" + } + }, + { + "name": "output", + "description": "Name of the output column.", + "required": true, + "role": "column-output", + "schema": { + "type": "string" + } + }, + { + "name": "include_empty", + "description": "Whether to include empty columns in the created dictionary.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Take multiple columns and merge them to a dictionary (aka object) using the column headers as keys.\n\n## Migrated examples\n#### Merging Two Columns Into a Dictionary\n\n##### Recipe\n\n```yaml\nwrangles:\n - merge.to_dict:\n input:\n - Col1\n - Col2\n output: Dict Col\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Col1 | Col2 |\n| --- | --- |\n| A | B |\n\n
\n\n
\n\n##### Output Sample\n\n| Dict Col |\n| --- |\n| \\{'Col1': 'A', 'Col2': 'B'\\} |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/merge.py", + "title": "WranglesPY merge.to_dict implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/merge/_sources/to-dict.md", + "title": "Existing merge.to_dict Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/merge/to-list.json b/wrangles-docs/static/registry/contracts/merge/to-list.json new file mode 100644 index 0000000..dd14ce4 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/merge/to-list.json @@ -0,0 +1,110 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "d5300fe7-c8a4-4a41-8f12-f2c1698678cc", + "wrangle_name": "to_list", + "namespace": "merge", + "wrangle_key": "merge.to_list", + "aliases": [], + "slug": "merge/to-list", + "title": "To List", + "description": "Take multiple columns and merge them to a list.", + "status": "active", + "visibility": "public", + "tags": [ + "merge", + "to-list" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.merge.to_list", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "List of input columns.", + "required": true, + "role": "column-selector", + "schema": { + "type": "array" + } + }, + { + "name": "output", + "description": "Name of the output column.", + "required": true, + "role": "column-output", + "schema": { + "type": "string" + } + }, + { + "name": "include_empty", + "description": "Whether to include empty columns in the created list.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Take multiple columns and merge them to a list.\n\n## Migrated examples\n#### Merging Multiple Columns to a Single List\n\n##### Recipe\n\n```yaml\nwrangles:\n - merge.to_list:\n input:\n - Col1\n - Col2\n - Col3\n output: List Col\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Col1 | Col2 | Col3 |\n| --- | --- | --- |\n| A | B | C |\n\n
\n\n
\n\n##### Output Sample\n\n| List Col |\n| --- |\n| ['A', 'B', 'C'] |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/merge.py", + "title": "WranglesPY merge.to_list implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/merge/_sources/to-list.md", + "title": "Existing merge.to_list Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/python.json b/wrangles-docs/static/registry/contracts/python.json new file mode 100644 index 0000000..61a33af --- /dev/null +++ b/wrangles-docs/static/registry/contracts/python.json @@ -0,0 +1,134 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "c0398a11-7731-4e47-8df0-b07eea0b1d6c", + "wrangle_name": "python", + "namespace": null, + "wrangle_key": "python", + "aliases": [], + "slug": "python", + "title": "Python", + "description": "Apply a simple single-line python command. For more complex python use a custom function. Note, this evaluates the python command - be especially cautious including variables from untrusted sources within the command string. The python command will be evaluated once for each row and the result returned. Reference column values by using their name. Non-alphanumeric characters within column names are replaced by underscores (_) Additionally, all columns are available as a dict named kwargs. Additional parameters set for the wrangle will also be available to the command.", + "status": "active", + "visibility": "public", + "tags": [ + "compute", + "python" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.main.python", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "command", + "description": "Python command. This must return a value. Note: any non-alphanumeric characters in variable names are replaced by underscores (_).", + "required": true, + "role": "option", + "schema": { + "type": "string" + } + }, + { + "name": "output", + "description": "Name or list of output column(s). To output multiple columns, return a list of the corresponding length.", + "required": true, + "role": "column-output", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "input", + "description": "Name or list of input column(s) to filter the data available to the command. Useful in conjunction with kwargs to target a variable range of columns. If not specified, all columns will be available.", + "required": false, + "role": "column-selector", + "runtime_default": null, + "schema": { + "type": [ + "string", + "integer", + "array", + "null" + ] + } + }, + { + "name": "except", + "description": "Value to return for the row if an exception occurs during the evaluation. If not provided, an exception will be raised as normal. If multiple output columns are specified, this must match the length.", + "required": false, + "role": "option", + "schema": { + "type": [ + "string", + "array", + "number", + "integer", + "boolean", + "object" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "The Python wrangle executes simple Python commands inline within a recipe. Row values are referenced by column name and commands are evaluated once per row. Spaces within column names are replaced by underscores (`_`). All columns are also available as a dictionary named `kwargs`. For more complex Python, use custom functions.\n\n:::caution\nThis wrangle evaluates the Python command. Be cautious when including variables from untrusted sources in the command string.\n:::\n\n## Migrated examples\n#### Python Wrangle\n\n##### Recipe\n\n```yaml\nwrangles:\n - python:\n output: result\n command: My_Column.upper()\n```\n\n
\n\n
\n\n##### Input Sample\n\n| My Column |\n| --- |\n| example text |\n\n
\n\n
\n\n##### Output Sample\n\n| My Column | result |\n| --- | --- |\n| example text | EXAMPLE TEXT |\n\n
\n\n
\n\n#### Including Your Own Parameters\n\nThe Python wrangle supports parameters so values of unknown origin can be injected safely.\n\n##### Recipe\n\n```yaml\nwrangles:\n - python:\n output: sliced\n command: input_column[:i]\n i: ${var}\n```\n\n
\n\n
\n\n##### Input Sample\n\n_No sample available._\n\n
\n\n
\n\n##### Output Sample\n\n_No sample available._\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py", + "title": "WranglesPY python implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compute/_sources/python.md", + "title": "Existing python Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/recipe.json b/wrangles-docs/static/registry/contracts/recipe.json new file mode 100644 index 0000000..c6a80ad --- /dev/null +++ b/wrangles-docs/static/registry/contracts/recipe.json @@ -0,0 +1,131 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": null, + "wrangle_name": "recipe", + "namespace": null, + "wrangle_key": "recipe", + "aliases": [], + "slug": "recipe", + "title": "Recipe", + "description": "Run another recipe as a wrangle against the current dataframe.", + "status": "active", + "visibility": "public", + "tags": [ + "recipe" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.main.recipe", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name, index, or list of input columns.", + "required": false, + "role": "column-selector", + "runtime_default": null, + "schema": { + "type": [ + "string", + "integer", + "array", + "null" + ] + } + }, + { + "name": "output", + "description": "Name or list of output columns.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "name", + "description": "File name of the recipe.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "variables", + "description": "A dictionary of variables to pass to the recipe.", + "required": false, + "role": "variables", + "runtime_default": null, + "schema": { + "type": [ + "object", + "null" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "## Behavior\n\nRun another recipe as a wrangle against the current dataframe.\n\nThis first-pass guidance is derived from the callable signature and its embedded Python schema docstring.", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py", + "title": "WranglesPY recipe implementation" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/reindex.json b/wrangles-docs/static/registry/contracts/reindex.json new file mode 100644 index 0000000..a72ae61 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/reindex.json @@ -0,0 +1,114 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "def87df8-72da-4e34-83c1-1fde25126257", + "wrangle_name": "reindex", + "namespace": null, + "wrangle_key": "reindex", + "aliases": [], + "slug": "reindex", + "title": "Reindex", + "description": "Changes the row labels and column labels of a DataFrame.", + "status": "active", + "visibility": "public", + "tags": [ + "transform", + "reindex" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.pandas.reindex", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": false, + "where_params": false + }, + "parameters": [ + { + "name": "labels", + "description": "New labels / index to conform the axis specified by ‘axis’ to.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "array", + "null" + ] + } + }, + { + "name": "index", + "description": "New labels for the index. Preferably an Index object to avoid duplicating data.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "array", + "null" + ] + } + }, + { + "name": "columns", + "description": "New labels for the columns. Preferably an Index object to avoid duplicating data.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "array", + "null" + ] + } + }, + { + "name": "axis", + "description": "Axis to target. Can be either the axis name (‘index’, ‘columns’) or number (0, 1).", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "string", + "integer", + "null" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Conform a DataFrame to a new index with optional filling logic.\n\n## Migrated examples\n:::note\nCannot specify both `axis` and any of `index` or `columns`. Reindex is not compatible with `where` filtering.\n:::\n\n#### Reindexing a Dataframe\n\n##### Recipe\n\n```yaml\nwrangles:\n - reindex:\n index:\n - 5\n - 4\n - 3\n - 2\n - 1\n```\n\n
\n\n
\n\n##### Input Sample\n\n| | Material | Product Data |\n| --- | --- | --- |\n| 1 | Ceramic | SKF ball brg |\n| 2 | Rubber | brg seal |\n| 3 | Brass | Ball valve |\n| 4 | Ceramic | Ceramic cartridge |\n| 5 | Stainless Steel | Needle Bearing |\n\n
\n\n
\n\n##### Output Sample\n\n| | Material | Product Data |\n| --- | --- | --- |\n| 5 | Stainless Steel | Needle Bearing |\n| 4 | Ceramic | Ceramic cartridge |\n| 3 | Brass | Ball valve |\n| 2 | Rubber | brg seal |\n| 1 | Ceramic | SKF ball brg |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/pandas.py", + "title": "WranglesPY reindex implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/transform/_sources/reindex.md", + "title": "Existing reindex Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/remove-words.json b/wrangles-docs/static/registry/contracts/remove-words.json new file mode 100644 index 0000000..410135c --- /dev/null +++ b/wrangles-docs/static/registry/contracts/remove-words.json @@ -0,0 +1,138 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "543b96c3-f354-48be-8046-bf0cb9fbaf56", + "wrangle_name": "remove_words", + "namespace": null, + "wrangle_key": "remove_words", + "aliases": [], + "slug": "remove-words", + "title": "Remove Words", + "description": "Remove all the elements that occur in one list from another.", + "status": "active", + "visibility": "public", + "tags": [ + "format", + "remove-words" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.main.remove_words", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of column to remove words from.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "to_remove", + "description": "Column or list of columns with a list of words to be removed.", + "required": true, + "role": "option", + "schema": { + "type": "string" + } + }, + { + "name": "output", + "description": "Name of the output columns.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "tokenize_to_remove", + "description": "Tokenize all to_remove inputs.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "ignore_case", + "description": "Ignore input and to_remove case.", + "required": false, + "role": "option", + "runtime_default": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Remove all the elements that occur in one list from another.\n\n## Migrated examples\n#### Removing Words From a Column\n\n##### Recipe\n\n```yaml\nwrangles:\n - remove_words:\n input: Description\n to_remove: # To Remove columns must be list\n - Materials\n - Colours\n output: Product\n tokenize_to_remove: True\n ignore_case: False\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Colours | Materials | Description |\n| --- | --- | --- |\n| ['Blue'] | ['Steel'] | Steel Blue Bottle |\n| ['Blue'] | ['Steel'] | ['Steel', 'Blue', 'Bottle'] |\n\n
\n\n
\n\n##### Output Sample\n\n| Product |\n| --- |\n| Bottle |\n| Bottle |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py", + "title": "WranglesPY remove_words implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/remove-words.md", + "title": "Existing remove_words Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/rename.json b/wrangles-docs/static/registry/contracts/rename.json new file mode 100644 index 0000000..62280ef --- /dev/null +++ b/wrangles-docs/static/registry/contracts/rename.json @@ -0,0 +1,107 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "ab06898f-faf7-42e7-8275-5e3034a4d727", + "wrangle_name": "rename", + "namespace": null, + "wrangle_key": "rename", + "aliases": [], + "slug": "rename", + "title": "Rename", + "description": "Rename a column or list of columns.", + "status": "active", + "visibility": "public", + "tags": [ + "transform", + "rename" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.main.rename", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": false, + "where_params": false + }, + "parameters": [ + { + "name": "input", + "description": "Name or list of input columns.", + "required": false, + "role": "column-selector", + "runtime_default": null, + "schema": { + "type": [ + "string", + "integer", + "array", + "null" + ] + } + }, + { + "name": "output", + "description": "Name or list of output columns.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "wrangles", + "description": "Use wrangles to transform the column names. The input is named 'columns' and the final result must also include the column named 'columns'. This can only be used instead of the standard rename.", + "required": false, + "role": "nested-wrangles", + "runtime_default": null, + "schema": { + "type": [ + "array", + "null" + ], + "minItems": 1, + "items": { + "$ref": "#/$defs/wrangles/items" + } + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Rename a column or list of columns.\n\n## Migrated examples\n:::note\nRename is not compatible with `where` filtering.\n:::\n\n#### Renaming Columns With Input and Output\n\n##### Recipe\n\n```yaml\nwrangles:\n - rename:\n input:\n - Manufacturer Name\n - Manufacturer Part Number\n output:\n - Manufacturer\n - MPN\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Manufacturer Name | Manufacturer Part Number |\n| --- | --- |\n| SKF | 302-2 |\n| Timken | PF48 |\n\n
\n\n
\n\n##### Output Sample\n\n| Manufacturer | MPN |\n| --- | --- |\n| SKF | 302-2 |\n| Timken | PF48 |\n\n
\n\n
\n\n#### Renaming Columns Without Using Input and Output\n\n##### Recipe\n\n```yaml\nwrangles:\n - rename:\n Manufacturer Name: Manufacturer\n Manufacturer Part Number: MPN\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Manufacturer Name | Manufacturer Part Number |\n| --- | --- |\n| SKF | 302-2 |\n| Timken | PF48 |\n\n
\n\n
\n\n##### Output Sample\n\n| Manufacturer | MPN |\n| --- | --- |\n| SKF | 302-2 |\n| Timken | PF48 |\n\n
\n\n
\n\n#### Using Wrangles in Rename\n\n##### Recipe\n\n```yaml\nwrangles:\n - rename:\n wrangles:\n - convert.case:\n input: columns\n case: upper\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Manufacturer Name | Manufacturer Part Number |\n| --- | --- |\n| SKF | 302-2 |\n| Timken | PF48 |\n\n
\n\n
\n\n##### Output Sample\n\n| MANUFACTURER NAME | MANUFACTURER PART NUMBER |\n| --- | --- |\n| SKF | 302-2 |\n| Timken | PF48 |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py", + "title": "WranglesPY rename implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/transform/_sources/rename.md", + "title": "Existing rename Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/replace.json b/wrangles-docs/static/registry/contracts/replace.json new file mode 100644 index 0000000..72300e0 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/replace.json @@ -0,0 +1,127 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "f0ab715e-9e0e-4614-83e4-5cd8ea08a09f", + "wrangle_name": "replace", + "namespace": null, + "wrangle_key": "replace", + "aliases": [], + "slug": "replace", + "title": "Replace", + "description": "Quick find and replace for simple values. Can use regex if 'input' in params and isinstance(params['input'], list):in the find field.", + "status": "active", + "visibility": "public", + "tags": [ + "format", + "replace" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.main.replace", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name or list of input column.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "find", + "description": "Pattern to find using regex.", + "required": true, + "role": "option", + "schema": { + "type": "string" + } + }, + { + "name": "replace", + "description": "Value to replace the pattern found.", + "required": true, + "role": "option", + "schema": { + "type": "string" + } + }, + { + "name": "output", + "description": "Name or list of output column.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Quick find and replace for simple values. Can use regex in the `find` field.\n\n:::note\nValues that are not a number or a string pass through unaltered.\n:::\n\n## Migrated examples\n#### Replacing an Abbreviation\n\n##### Recipe\n\n```yaml\nwrangles:\n - replace:\n input: Product Data\n find: brg\n replace: bearing\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Product Data |\n| --- |\n| SKF ball brg |\n| brg seal |\n\n
\n\n
\n\n##### Output Sample\n\n| Product Data |\n| --- |\n| SKF ball bearing |\n| bearing seal |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py", + "title": "WranglesPY replace implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/replace.md", + "title": "Existing replace Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/round.json b/wrangles-docs/static/registry/contracts/round.json new file mode 100644 index 0000000..f1e986c --- /dev/null +++ b/wrangles-docs/static/registry/contracts/round.json @@ -0,0 +1,119 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "12f3111b-8511-4e42-8d3f-b5302dc3b4e4", + "wrangle_name": "round", + "namespace": null, + "wrangle_key": "round", + "aliases": [], + "slug": "round", + "title": "Round", + "description": "Round column(s) to the specified decimals.", + "status": "active", + "visibility": "public", + "tags": [ + "format", + "round" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.pandas.round", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the input column(s).", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "decimals", + "description": "Number of decimal places to round column.", + "required": false, + "role": "option", + "runtime_default": 0, + "schema": { + "type": "integer" + } + }, + { + "name": "output", + "description": "Name of the output column(s).", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Round numbers in a column to the nearest decimal point of your choosing.\n\n## Migrated examples\n#### Rounding a Column\n\n##### Recipe\n\n```yaml\nwrangles:\n - round:\n input: Cost Per Unit\n output: Cost Rounded\n decimals: 2\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Cost Per Unit |\n| --- |\n| 3.14159 |\n| 2.71828 |\n\n
\n\n
\n\n##### Output Sample\n\n| Cost Per Unit | Cost Rounded |\n| --- | --- |\n| 3.14159 | 3.14 |\n| 2.71828 | 2.72 |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/pandas.py", + "title": "WranglesPY round implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/round.md", + "title": "Existing round Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/search/find-links.json b/wrangles-docs/static/registry/contracts/search/find-links.json new file mode 100644 index 0000000..16002f4 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/search/find-links.json @@ -0,0 +1,204 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "ec1f661b-2cbc-4a47-88e3-646179104376", + "wrangle_name": "find_links", + "namespace": "search", + "wrangle_key": "search.find_links", + "aliases": [], + "slug": "search/find-links", + "title": "Find Links", + "description": "Perform web searches to find links. Returns structured search results with titles, links, snippets, and optional pricing.", + "status": "active", + "visibility": "public", + "tags": [ + "search", + "find-links" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.search.find_links", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "queries", + "description": "Name or list of input columns containing search queries.", + "required": true, + "role": "option", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "id", + "description": "Name of the column containing the row ID to append to each search result.", + "required": true, + "role": "option", + "schema": { + "type": "string" + } + }, + { + "name": "output", + "description": "Output column for the dictionaries. If a list of 2 is provided, outputs [dicts_column, pretty_strings_column].", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "client", + "description": "The search provider to use.", + "required": false, + "role": "option", + "runtime_default": "serpapi", + "schema": { + "type": "string", + "enum": [ + "serpapi" + ] + } + }, + { + "name": "api_key", + "description": "API key for the search client. Can also be set as an environment variable (e.g., SERPAPI_API_KEY).", + "required": false, + "role": "credential", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "n_results", + "description": "Number of search results to return per query (default 10, max 100).", + "required": false, + "role": "option", + "runtime_default": 10, + "schema": { + "type": "integer" + } + }, + { + "name": "threads", + "description": "Number of concurrent threads for parallel processing (default 10).", + "required": false, + "role": "option", + "runtime_default": 10, + "schema": { + "type": "integer" + } + }, + { + "name": "country", + "description": "Country code for search results (default 'us'). Alias: gl.", + "required": false, + "role": "option", + "schema": { + "type": "string" + } + }, + { + "name": "language", + "description": "Language code for search results (default 'en'). Alias: hl.", + "required": false, + "role": "option", + "schema": { + "type": "string" + } + }, + { + "name": "location", + "description": "Location for search results (e.g., 'Austin, Texas').", + "required": false, + "role": "option", + "schema": { + "type": "string" + } + }, + { + "name": "device", + "description": "Device type for search results.", + "required": false, + "role": "option", + "schema": { + "type": "string", + "enum": [ + "desktop", + "mobile", + "tablet" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Perform web searches to find links. Returns structured search results with titles, links, snippets, and optional pricing.\n\n## Migrated examples\n#### Find Product Links\n\nThis template searches once per query and returns structured result dictionaries. Search results vary by provider, location, and time.\n\n##### Recipe\n\n```yaml\nwrangles:\n - search.find_links:\n id: Row ID\n queries:\n - Search Query\n output:\n - Search Results\n api_key: Your SerpApi API key\n client: serpapi\n n_results: 5\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Row ID | Search Query |\n| --- | --- |\n| 1001 | SKF 6202 bearing supplier |\n\n
\n\n
\n\n##### Output Sample\n\n| Row ID | Search Query | Search Results |\n| --- | --- | --- |\n| 1001 | SKF 6202 bearing supplier | `[{\"title\": \"Example result\", \"link\": \"https://example.com/6202\", \"snippet\": \"SKF 6202 bearing\"}]` |\n\n
\n\n
\n\n_Template based on the documented parameters; no published source example is currently available._", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/search.py", + "title": "WranglesPY search.find_links implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/search/_sources/find-links.md", + "title": "Existing search.find_links Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/search/retrieve-link-content.json b/wrangles-docs/static/registry/contracts/search/retrieve-link-content.json new file mode 100644 index 0000000..d9806f0 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/search/retrieve-link-content.json @@ -0,0 +1,181 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "3d5faa87-9e96-48c0-8226-5ae566e8d76c", + "wrangle_name": "retrieve_link_content", + "namespace": "search", + "wrangle_key": "search.retrieve_link_content", + "aliases": [], + "slug": "search/retrieve-link-content", + "title": "Retrieve Link Content", + "description": "Retrieves targeted content from web pages using LLM URL extraction. Can optionally output a second column containing a clean, human-readable text summary of the retrieved data.", + "status": "active", + "visibility": "public", + "tags": [ + "search", + "retrieve-link-content" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.search.retrieve_link_content", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name or list of input columns containing URLs or Scored Search Result dictionaries.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "output", + "description": "Name of the output column for the raw dictionaries. To output BOTH the raw dictionaries and the formatted text, provide a list of exactly two column names (e.g., [page_data, page_text]).", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "client", + "description": "The retrieval provider to use.", + "required": false, + "role": "option", + "runtime_default": "google_url_context", + "schema": { + "type": "string", + "enum": [ + "google_url_context" + ] + } + }, + { + "name": "api_key", + "description": "API key for the provider. Can also be set as an environment variable (e.g., GOOGLE_API_KEY).", + "required": false, + "role": "credential", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "prompt", + "description": "Optional custom system prompt to guide the extraction behavior and output format.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "model_id", + "description": "The specific model ID to use (default models/gemini-3-flash-preview).", + "required": false, + "role": "model-reference", + "runtime_default": "models/gemini-3-flash-preview", + "schema": { + "type": "string" + } + }, + { + "name": "output_format", + "description": "The desired format for the extracted content.", + "required": false, + "role": "column-output", + "runtime_default": "json", + "schema": { + "type": "string", + "enum": [ + "markdown", + "json" + ] + } + }, + { + "name": "threads", + "description": "Number of concurrent threads for parallel processing (default 10).", + "required": false, + "role": "option", + "runtime_default": 10, + "schema": { + "type": "integer" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Retrieves targeted content from web pages using LLM URL extraction. Can optionally output a second column containing a clean, human-readable text summary of the retrieved data.\n\n## Migrated examples\n#### Retrieve Structured Page Content\n\nThis template extracts JSON content from a URL. Returned fields depend on the page, prompt, and retrieval model.\n\n##### Recipe\n\n```yaml\nwrangles:\n - search.retrieve_link_content:\n input:\n - Product URL\n output:\n - Page Data\n api_key: Your Google API key\n client: google_url_context\n output_format: json\n prompt: Extract the product title and manufacturer.\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Product URL |\n| --- |\n| https://example.com/products/6202 |\n\n
\n\n
\n\n##### Output Sample\n\n| Product URL | Page Data |\n| --- | --- |\n| https://example.com/products/6202 | `{\"title\": \"6202 Bearing\", \"manufacturer\": \"SKF\"}` |\n\n
\n\n
\n\n_Template based on the documented parameters; no published source example is currently available._", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/search.py", + "title": "WranglesPY search.retrieve_link_content implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/search/_sources/retrieve-link-content.md", + "title": "Existing search.retrieve_link_content Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/select/columns.json b/wrangles-docs/static/registry/contracts/select/columns.json new file mode 100644 index 0000000..f756f6b --- /dev/null +++ b/wrangles-docs/static/registry/contracts/select/columns.json @@ -0,0 +1,95 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "bca12c60-3957-4dc5-83f7-5ee460df2a11", + "wrangle_name": "columns", + "namespace": "select", + "wrangle_key": "select.columns", + "aliases": [], + "slug": "select/columns", + "title": "Columns", + "description": "Select columns from the dataframe.", + "status": "active", + "visibility": "public", + "tags": [ + "select", + "columns" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.select.columns", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the column(s) to select.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Select columns from the dataframe\n\n## Migrated examples\n#### Selecting Columns\n\n##### Recipe\n\n```yaml\nwrangles:\n - select.columns:\n input: Manufacturer\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Part Number | Manufacturer |\n| --- | --- |\n| 1234 | SKF |\n| 5678 | Timken |\n\n
\n\n
\n\n##### Output Sample\n\n| Manufacturer |\n| --- |\n| SKF |\n| Timken |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py", + "title": "WranglesPY select.columns implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/columns.md", + "title": "Existing select.columns Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/select/dictionary-element.json b/wrangles-docs/static/registry/contracts/select/dictionary-element.json new file mode 100644 index 0000000..f707de4 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/select/dictionary-element.json @@ -0,0 +1,135 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "5adaeada-6da8-464f-84cb-9fb5ecc17e48", + "wrangle_name": "dictionary_element", + "namespace": "select", + "wrangle_key": "select.dictionary_element", + "aliases": [], + "slug": "select/dictionary-element", + "title": "Dictionary Element", + "description": "Select one or more element of a dictionary.", + "status": "active", + "visibility": "public", + "tags": [ + "select", + "dictionary-element" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.select.dictionary_element", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the input column.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "element", + "description": "The key or keys from the dictionary to select. If a single key is provided, the value will be returned If a lists of keys are selected, the result will be a new dictionary.", + "required": true, + "role": "option", + "schema": { + "type": "string" + } + }, + { + "name": "output", + "description": "Name of the output column. If omitted, the input column will be replaced.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "default", + "description": "Set the default value to return if the specified element doesn't exist. If selecting multiple elements, a dict of defaults can be set.", + "required": false, + "role": "fallback-value", + "runtime_default": "", + "schema": { + "type": [ + "string", + "number", + "array", + "object", + "boolean", + "null" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Select one or more element of a dictionary.\n\n## Migrated examples\n#### Selecting Dictionary Element Using Where\n\n##### Recipe\n\n```yaml\nwrangles:\n - select.dictionary_element:\n input: Properties\n output: Shapes\n element: shapes\n default: square\n where: Part Number = 1234\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Properties | Part Number |\n| --- | --- |\n| \\{'colours': ['red', 'white', 'blue'], 'shapes': 'round', 'materials': 'tungsten'\\} | 1234 |\n| \\{'colours': ['green', 'yellow', 'orange'], 'shapes': 'square', 'materials': 'tungsten'\\} | 5678 |\n\n
\n\n
\n\n##### Output Sample\n\n| Shapes |\n| --- |\n| round |\n| |\n\n
\n\n
\n\n#### Selecting Multiple Dictionary Elements\n\n##### Recipe\n\n```yaml\nwrangles:\n - select.dictionary_element:\n input: Properties\n element:\n - shapes\n - materials\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Properties |\n| --- |\n| \\{'colours': ['red', 'white', 'blue'], 'shapes': 'round', 'materials': 'tungsten'\\} |\n| \\{'colours': ['green', 'yellow', 'orange'], 'shapes': 'square', 'materials': 'tungsten'\\} |\n\n
\n\n
\n\n##### Output Sample\n\n| Properties |\n| --- |\n| \\{'shapes': 'round', 'materials': 'tungsten'\\} |\n| \\{'shapes': 'square', 'materials': 'tungsten'\\} |\n\n
\n\n
\n\n#### Selecting Multiple Dictionary Elements Using a Wildcard\n\n##### Recipe\n\n```yaml\nwrangles:\n - select.dictionary_element:\n input: Properties\n output: Output Dict\n element:\n - Col*\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Column |\n| --- |\n| \\{'Col1': 'A', 'Col2': 'B', 'Other3': 'C'\\} |\n\n
\n\n
\n\n##### Output Sample\n\n| Column | Output Dict |\n| --- | --- |\n| \\{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\\} | \\{'Col1': 'A', 'Col2': 'B'\\} |\n\n
\n\n
\n\n#### Selecting Multiple Dictionary Elements Using Regex\n\n##### Recipe\n\n```yaml\nwrangles:\n - select.dictionary_element:\n input: Properties\n output: Output Dict\n element:\n - \"regex: .*2\"\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Column |\n| --- |\n| \\{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\\} |\n\n
\n\n
\n\n##### Output Sample\n\n| Column | Output Dict |\n| --- | --- |\n| \\{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\\} | \\{'Col2': 'B'\\} |\n\n
\n\n
\n\n#### Selecting Elements While Renaming\n\n##### Recipe\n\n```yaml\nwrangles:\n - select.dictionary_element:\n input: Properties\n output: Output Dict\n element:\n - Col1: Column 1\n - Col2: Column 2\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Column |\n| --- |\n| \\{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\\} |\n\n
\n\n
\n\n##### Output Sample\n\n| Column | Output Dict |\n| --- | --- |\n| \\{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\\} | \\{'Column 1': 'A', 'Column 2': 'B'\\} |\n\n
\n\n
\n\n#### Using Default to Fill Missing Elements\n\n##### Recipe\n\n```yaml\nwrangles:\n - select.dictionary_element:\n input: Properties\n output: Output Dict\n element:\n - Col1\n - Col3\n default:\n Col1: Z\n Col3: Y\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Column |\n| --- |\n| \\{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\\} |\n| \\{'Col1': 'D', 'Col2': 'E'\\} |\n\n
\n\n
\n\n##### Output Sample\n\n| Column | Output Dict |\n| --- | --- |\n| \\{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\\} | \\{'Col1': 'A', 'Col3': 'C'\\} |\n| \\{'Col1': 'D', 'Col2': 'E'\\} | \\{'Col1': 'D', 'Col3': 'Y'\\} |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py", + "title": "WranglesPY select.dictionary_element implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/dictionary-element.md", + "title": "Existing select.dictionary_element Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/select/element.json b/wrangles-docs/static/registry/contracts/select/element.json new file mode 100644 index 0000000..3925ab9 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/select/element.json @@ -0,0 +1,126 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "223d2f4e-3247-4189-8b6c-e73fe44c4266", + "wrangle_name": "element", + "namespace": "select", + "wrangle_key": "select.element", + "aliases": [], + "slug": "select/element", + "title": "Element", + "description": "Select elements of lists or dicts using python syntax like col[0]['key'].", + "status": "active", + "visibility": "public", + "tags": [ + "select", + "element" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.select.element", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the input column and sub elements This permits by index for lists or dict and by key for dicts e.g. col[0]['key'] // [{\"key\":\"val\"}] -> \"val\".", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "output", + "description": "Name of the output column(s).", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "default", + "description": "Set the default value to return if the specified element doesn't exist.", + "required": false, + "role": "fallback-value", + "runtime_default": null, + "schema": { + "type": [ + "string", + "number", + "array", + "object", + "boolean", + "null" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Select elements of lists or dictionaries using Python syntax like `col[1:3]['key']`.\n\n## Migrated examples\n#### Selecting The First Element\n\n##### Recipe\n\n```yaml\nwrangles:\n - select.element:\n input: Column A[0]\n output: First Element\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Column A |\n| --- |\n| [A, 0.9] |\n| [B, 0.8] |\n\n
\n\n
\n\n##### Output Sample\n\n| Column A | First Element |\n| --- | --- |\n| [A, 0.9] | A |\n| [B, 0.8] | B |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py", + "title": "WranglesPY select.element implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/element.md", + "title": "Existing select.element Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/select/group-by.json b/wrangles-docs/static/registry/contracts/select/group-by.json new file mode 100644 index 0000000..fd171a1 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/select/group-by.json @@ -0,0 +1,298 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "c0af10b1-423a-416c-8cb5-7e7fe1164964", + "wrangle_name": "group_by", + "namespace": "select", + "wrangle_key": "select.group_by", + "aliases": [], + "slug": "select/group-by", + "title": "Group By", + "description": "Group and aggregate the data.", + "status": "active", + "visibility": "public", + "tags": [ + "select", + "group-by" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.select.group_by", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "by", + "description": "List of the input columns to group on.", + "required": false, + "role": "column-selector", + "runtime_default": [], + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "auto_rename_columns", + "description": "If true (default), aggregated column names include the operation as a suffix (e.g. Value.sum). If false, column names are left as-is; use a dictionary entry to supply a custom output name (e.g. - Value: Total).", + "required": false, + "role": "option", + "runtime_default": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "list", + "description": "Group and return all values for these column(s) as a list.", + "required": false, + "role": "option", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "first", + "description": "The first value for these column(s).", + "required": false, + "role": "option", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "last", + "description": "The last value for these column(s).", + "required": false, + "role": "option", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "min", + "description": "The minimum value for these column(s).", + "required": false, + "role": "option", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "max", + "description": "The maximum value for these column(s).", + "required": false, + "role": "option", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "mean", + "description": "The mean (average) value for these column(s).", + "required": false, + "role": "option", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "median", + "description": "The median value for these column(s).", + "required": false, + "role": "option", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "nunique", + "description": "The count of unique values for these column(s).", + "required": false, + "role": "option", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "count", + "description": "The count of values for these column(s).", + "required": false, + "role": "option", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "counts", + "description": "Return a dictionary containing the count of each distinct value for these column(s). Keys are converted to JSON-safe strings; missing values use the key \"null\" and booleans use lowercase \"true\"/\"false\".", + "required": false, + "role": "option", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "std", + "description": "The standard deviation of values for these column(s).", + "required": false, + "role": "option", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "sum", + "description": "The total of values for these column(s).", + "required": false, + "role": "option", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "any", + "description": "Return true if any of the values for these column(s) are true.", + "required": false, + "role": "option", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "all", + "description": "Return true if all of the values for these column(s) are true.", + "required": false, + "role": "option", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "p75", + "description": "Get a percentile. Note, you can use any integer here for the corresponding percentile.", + "required": false, + "role": "option", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "custom.*", + "name_pattern": "^custom\\.[A-Za-z_][A-Za-z0-9_]*$", + "description": "Placeholder for custom functions. Replace 'placeholder' with the name of the function.", + "required": false, + "role": "option", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Group and aggregate the data\n\n## Migrated examples\n#### Grouping By One Column\n\n##### Recipe\n\n```yaml\nwrangles:\n - select.group_by:\n by:\n - Product Type\n sum: Quantity\n mean: Price ($)\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Product | Quantity | Price ($) | Product Type |\n| --- | --- | --- | --- |\n| Hammer | 3 | 12.99 | Hand Tools |\n| Ratchet Wrench | 12 | 6.99 | Hand Tools |\n| Cordless Drill | 2 | 49.99 | Power Tools |\n| Reciprocating Saw | 7 | 29.99 | Power Tools |\n\n
\n\n
\n\n##### Output Sample\n\n| Product Type | Quantity.sum | Price ($).mean |\n| --- | --- | --- |\n| Hand Tools | 15 | 9.99 |\n| Power Tools | 9 | 39.99 |\n\n
\n\n
\n\n#### Grouping With Custom Function Aggregation\n\n##### Recipe\n\n```yaml\nwrangles:\n - select.group_by:\n by: Category\n custom.sum_times_two: Quantity\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Category | Quantity |\n| --- | --- |\n| Hand Tools | 3 |\n| Hand Tools | 1 |\n| Hand Tools | 2 |\n| Power Tools | 4 |\n\n
\n\n
\n\n##### Output Sample\n\n| Category | Quantity.sum_times_two |\n| --- | --- |\n| Hand Tools | 12 |\n| Power Tools | 4 |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py", + "title": "WranglesPY select.group_by implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/group-by.md", + "title": "Existing select.group_by Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/select/head.json b/wrangles-docs/static/registry/contracts/select/head.json new file mode 100644 index 0000000..4523ef2 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/select/head.json @@ -0,0 +1,91 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "237af1ec-db7d-415a-88b7-70586a2191fb", + "wrangle_name": "head", + "namespace": "select", + "wrangle_key": "select.head", + "aliases": [], + "slug": "select/head", + "title": "Head", + "description": "Return the first n rows.", + "status": "active", + "visibility": "public", + "tags": [ + "select", + "head" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.select.head", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "n", + "description": "Number of rows to return.", + "required": true, + "role": "option", + "schema": { + "type": "integer" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Return the first n rows\n\n## Migrated examples\n#### Selecting The First n Rows\n\n##### Recipe\n\n```yaml\nwrangles:\n - select.head:\n n: 2\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Product | Manufacturer |\n| --- | --- |\n| Ball Bearing | SKF |\n| Bearing Race | Timken |\n| Needle Bearing | Acme Bearings |\n| Roller Bearing | General Bearing Co. |\n\n
\n\n
\n\n##### Output Sample\n\n| Product | Manufacturer |\n| --- | --- |\n| Ball Bearing | SKF |\n| Bearing Race | Timken |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py", + "title": "WranglesPY select.head implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/head.md", + "title": "Existing select.head Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/select/highest-confidence.json b/wrangles-docs/static/registry/contracts/select/highest-confidence.json new file mode 100644 index 0000000..f8dff3b --- /dev/null +++ b/wrangles-docs/static/registry/contracts/select/highest-confidence.json @@ -0,0 +1,103 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "00aad85d-8cc8-42e5-86f3-e4ff916e8ac2", + "wrangle_name": "highest_confidence", + "namespace": "select", + "wrangle_key": "select.highest_confidence", + "aliases": [], + "slug": "select/highest-confidence", + "title": "Highest Confidence", + "description": "Select the option with the highest confidence from multiple columns. Inputs are expected to be of the form [<>, <>].", + "status": "active", + "visibility": "public", + "tags": [ + "select", + "highest-confidence" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.select.highest_confidence", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "List of the input columns to select from.", + "required": true, + "role": "column-selector", + "schema": { + "type": "array" + } + }, + { + "name": "output", + "description": "If two columns; the result and confidence. If one column; [result, confidence].", + "required": true, + "role": "column-output", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Select the option with the highest confidence from multiple columns. Inputs are expected to be of the form `[value, confidence_score]`.\n\n## Migrated examples\n#### Selecting Highest Confidence Single Output\n\n##### Recipe\n\n```yaml\nwrangles:\n - select.highest_confidence:\n input:\n - Col1\n - Col2\n - Col3\n output: Highest Confidence\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Col1 | Col2 | Col3 |\n| --- | --- | --- |\n| ['A', 0.79] | ['B', 0.77] | ['C', 0.99] |\n\n
\n\n
\n\n##### Output Sample\n\n| Highest Confidence |\n| --- |\n| ['C', 0.99] |\n\n
\n\n
\n\n#### Selecting Highest Confidence Two Outputs\n\n##### Recipe\n\n```yaml\nwrangles:\n - select.highest_confidence:\n input:\n - Col1\n - Col2\n - Col3\n output:\n - Item\n - Confidence\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Col1 | Col2 | Col3 |\n| --- | --- | --- |\n| ['A', 0.79] | ['B', 0.77] | ['C', 0.99] |\n\n
\n\n
\n\n##### Output Sample\n\n| Item | Confidence |\n| --- | --- |\n| C | 0.99 |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py", + "title": "WranglesPY select.highest_confidence implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/highest-confidence.md", + "title": "Existing select.highest_confidence Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/select/left.json b/wrangles-docs/static/registry/contracts/select/left.json new file mode 100644 index 0000000..9726fd1 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/select/left.json @@ -0,0 +1,118 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "5cdd9857-0c77-43bf-80d7-d0a8cb6f980b", + "wrangle_name": "left", + "namespace": "select", + "wrangle_key": "select.left", + "aliases": [], + "slug": "select/left", + "title": "Left", + "description": "Return characters from the left of text. Strings shorter than the length defined will be unaffected.", + "status": "active", + "visibility": "public", + "tags": [ + "select", + "left" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.select.left", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the column(s) to edit.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "length", + "description": "Number of characters to include from the left. If negative, this will remove the specified number of characters from the left. May not equal 0.", + "required": true, + "role": "option", + "schema": { + "type": "integer" + } + }, + { + "name": "output", + "description": "Name of the output column(s).", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Select characters from the left of the input. Using a negative length reverses the side of selection, selecting from the right.\n\n## Migrated examples\n#### Selecting Three Leftmost Elements\n\n##### Recipe\n\n```yaml\nwrangles:\n - select.left:\n input: Column\n output: Result\n length: 3\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Column |\n| --- |\n| pudding |\n\n
\n\n
\n\n##### Output Sample\n\n| Result |\n| --- |\n| pud |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py", + "title": "WranglesPY select.left implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/left.md", + "title": "Existing select.left Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/select/length.json b/wrangles-docs/static/registry/contracts/select/length.json new file mode 100644 index 0000000..b57b1ad --- /dev/null +++ b/wrangles-docs/static/registry/contracts/select/length.json @@ -0,0 +1,109 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "4d7a5f66-0a4a-40e0-8298-d5c55754423d", + "wrangle_name": "length", + "namespace": "select", + "wrangle_key": "select.length", + "aliases": [], + "slug": "select/length", + "title": "Length", + "description": "Calculate the lengths of data in a column. The length depends on the data type e.g. text will be the length of the text, lists will be the number of elements in the list.", + "status": "active", + "visibility": "public", + "tags": [ + "select", + "length" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.select.length", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the input column(s).", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "output", + "description": "Name of the output column(s).", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Calculate the lengths of data in a column. The length depends on the data type e.g. text will be the length of the text, lists will be the number of elements in the list.\n\n## Migrated examples\n#### Selecting the Length of Data Within a Column\n\n##### Recipe\n\n```yaml\nwrangles:\n - select.length:\n input: Part Code\n output: Part Code Length\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Part Code |\n| --- |\n| 6202 |\n\n
\n\n
\n\n##### Output Sample\n\n| Part Code Length |\n| --- |\n| 4 |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py", + "title": "WranglesPY select.length implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/length.md", + "title": "Existing select.length Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/select/list-element.json b/wrangles-docs/static/registry/contracts/select/list-element.json new file mode 100644 index 0000000..cab532f --- /dev/null +++ b/wrangles-docs/static/registry/contracts/select/list-element.json @@ -0,0 +1,136 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "ec40495d-d29a-4f62-86dd-eafa43cf388a", + "wrangle_name": "list_element", + "namespace": "select", + "wrangle_key": "select.list_element", + "aliases": [], + "slug": "select/list-element", + "title": "List Element", + "description": "Select a numbered element of a list (zero indexed).", + "status": "active", + "visibility": "public", + "tags": [ + "select", + "list-element" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.select.list_element", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the input column.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "output", + "description": "Name of the output column.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "element", + "description": "The numbered element of the list to select. Starts from zero. This may use python slicing syntax to select a subset of the list.", + "required": false, + "role": "option", + "runtime_default": 0, + "schema": { + "type": "integer" + } + }, + { + "name": "default", + "description": "Set the default value to return if the specified element doesn't exist.", + "required": false, + "role": "fallback-value", + "runtime_default": "", + "schema": { + "type": [ + "string", + "number", + "array", + "object", + "boolean", + "null" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Select a numbered element of a list (zero indexed).\n\n## Migrated examples\n#### Selecting the Second Element in a List\n\n##### Recipe\n\n```yaml\nwrangles:\n - select.list_element:\n input: Col1\n output: Second Element\n element: 2 # Zero indexed\n default: F\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Col1 |\n| --- |\n| ['A', 'B', 'C'] |\n| ['D', 'E'] |\n\n
\n\n
\n\n##### Output Sample\n\n| Third Element |\n| --- |\n| C |\n| F |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py", + "title": "WranglesPY select.list_element implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/list-element.md", + "title": "Existing select.list_element Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/select/right.json b/wrangles-docs/static/registry/contracts/select/right.json new file mode 100644 index 0000000..af432e2 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/select/right.json @@ -0,0 +1,118 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "89ee82ec-3bc5-4bfa-899b-7a1260ef9bdb", + "wrangle_name": "right", + "namespace": "select", + "wrangle_key": "select.right", + "aliases": [], + "slug": "select/right", + "title": "Right", + "description": "Return characters from the right of text. Strings shorter than the length defined will be unaffected.", + "status": "active", + "visibility": "public", + "tags": [ + "select", + "right" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.select.right", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the column(s) to edit.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "length", + "description": "Number of characters to include from the right. If negative, this will remove the specified number of characters from the right. May not equal 0.", + "required": true, + "role": "option", + "schema": { + "type": "integer" + } + }, + { + "name": "output", + "description": "Name of the output column(s).", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Select characters from the right of the input. Using a negative length reverses the side of selection, selecting from the left.\n\n## Migrated examples\n#### Selecting the Three Rightmost Elements\n\n##### Recipe\n\n```yaml\nwrangles:\n - select.right:\n input: Column\n output: Result\n length: 3\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Column |\n| --- |\n| pudding |\n\n
\n\n
\n\n##### Output Sample\n\n| Result |\n| --- |\n| ing |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py", + "title": "WranglesPY select.right implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/right.md", + "title": "Existing select.right Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/select/sample.json b/wrangles-docs/static/registry/contracts/select/sample.json new file mode 100644 index 0000000..23ab4ea --- /dev/null +++ b/wrangles-docs/static/registry/contracts/select/sample.json @@ -0,0 +1,95 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "95a84ab6-a66e-450f-8a4a-7a87e3a77932", + "wrangle_name": "sample", + "namespace": "select", + "wrangle_key": "select.sample", + "aliases": [], + "slug": "select/sample", + "title": "Sample", + "description": "Return a random sample of the rows.", + "status": "active", + "visibility": "public", + "tags": [ + "select", + "sample" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.select.sample", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "rows", + "description": "If a whole number, will select that number of rows. If a decimal between 0 and 1 will select that fraction of the rows e.g. 0.1 => 10% of rows will be returned.", + "required": true, + "role": "option", + "schema": { + "type": [ + "integer", + "number" + ], + "exclusiveMinimum": 0 + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Return a random sample of the rows\n\n## Migrated examples\n#### Selecting 2 Random Rows\n\n##### Recipe\n\n```yaml\nwrangles:\n - select.sample:\n rows: 2\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Product | Manufacturer |\n| --- | --- |\n| Ball Bearing | SKF |\n| Bearing Race | Timken |\n| Needle Bearing | Acme Bearings |\n| Roller Bearing | General Bearing Co. |\n\n
\n\n
\n\n##### Output Sample\n\n| Product | Manufacturer |\n| --- | --- |\n| Ball Bearing | SKF |\n| Needle Bearing | Acme Bearings |\n\n
\n\n
\n\n#### Selecting a Random 25% of All Rows\n\n##### Recipe\n\n```yaml\nwrangles:\n - select.sample:\n rows: .25\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Product | Manufacturer |\n| --- | --- |\n| Ball Bearing | SKF |\n| Bearing Race | Timken |\n| Needle Bearing | Acme Bearings |\n| Roller Bearing | General Bearing Co. |\n\n
\n\n
\n\n##### Output Sample\n\n| Product | Manufacturer |\n| --- | --- |\n| Needle Bearing | Acme Bearings |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py", + "title": "WranglesPY select.sample implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/sample.md", + "title": "Existing select.sample Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/select/substring.json b/wrangles-docs/static/registry/contracts/select/substring.json new file mode 100644 index 0000000..f9f108b --- /dev/null +++ b/wrangles-docs/static/registry/contracts/select/substring.json @@ -0,0 +1,137 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "8befddf8-602e-4fa9-8f16-4c547210ebec", + "wrangle_name": "substring", + "namespace": "select", + "wrangle_key": "select.substring", + "aliases": [], + "slug": "select/substring", + "title": "Substring", + "description": "Return characters from the middle of text.", + "status": "active", + "visibility": "public", + "tags": [ + "select", + "substring" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.select.substring", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the column(s) to edit.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "start", + "description": "The position of the first character to select. If ommited will start from the beginning and length must be provided.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "integer", + "null" + ], + "minimum": 1 + } + }, + { + "name": "length", + "description": "The length of the string to select. If ommited will select to the end of the string and start must be provided.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "integer", + "null" + ], + "minimum": 1 + } + }, + { + "name": "output", + "description": "Name of the output column(s).", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Return characters from the middle of text.\n\n## Migrated examples\n#### Selecting a Substring With Start and Length\n\n##### Recipe\n\n```yaml\nwrangles:\n - select.substring:\n input: Column\n output: Result\n start: 2\n length: 3\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Column |\n| --- |\n| pudding |\n\n
\n\n
\n\n##### Output Sample\n\n| Result |\n| --- |\n| udd |\n\n
\n\n
\n\n#### Selecting a Substring With Start Only\n\n##### Recipe\n\n```yaml\nwrangles:\n - select.substring:\n input: Column\n output: Result\n start: 2\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Column |\n| --- |\n| pudding |\n\n
\n\n
\n\n##### Output Sample\n\n| Result |\n| --- |\n| udding |\n\n
\n\n
\n\n#### Selecting a Substring With Length Only\n\n##### Recipe\n\n```yaml\nwrangles:\n - select.substring:\n input: Column\n output: Result\n length: 3\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Column |\n| --- |\n| pudding |\n\n
\n\n
\n\n##### Output Sample\n\n| Result |\n| --- |\n| pud |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py", + "title": "WranglesPY select.substring implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/substring.md", + "title": "Existing select.substring Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/select/tail.json b/wrangles-docs/static/registry/contracts/select/tail.json new file mode 100644 index 0000000..1910283 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/select/tail.json @@ -0,0 +1,91 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "60853759-c160-49a4-87eb-036516a9d823", + "wrangle_name": "tail", + "namespace": "select", + "wrangle_key": "select.tail", + "aliases": [], + "slug": "select/tail", + "title": "Tail", + "description": "Return the last n rows.", + "status": "active", + "visibility": "public", + "tags": [ + "select", + "tail" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.select.tail", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "n", + "description": "Number of rows to return.", + "required": true, + "role": "option", + "schema": { + "type": "integer" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Return the last n rows\n\n## Migrated examples\n#### Selecting The Last n Rows\n\n##### Recipe\n\n```yaml\nwrangles:\n - select.tail:\n n: 2\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Product | Manufacturer |\n| --- | --- |\n| Ball Bearing | SKF |\n| Bearing Race | Timken |\n| Needle Bearing | Acme Bearings |\n| Roller Bearing | General Bearing Co. |\n\n
\n\n
\n\n##### Output Sample\n\n| Product | Manufacturer |\n| --- | --- |\n| Needle Bearing | Acme Bearings |\n| Roller Bearing | General Bearing Co. |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py", + "title": "WranglesPY select.tail implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/tail.md", + "title": "Existing select.tail Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/select/threshold.json b/wrangles-docs/static/registry/contracts/select/threshold.json new file mode 100644 index 0000000..fc190f4 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/select/threshold.json @@ -0,0 +1,111 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "af2a5dcc-0ec0-48d7-8fb4-f58d9c5391d2", + "wrangle_name": "threshold", + "namespace": "select", + "wrangle_key": "select.threshold", + "aliases": [], + "slug": "select/threshold", + "title": "Threshold", + "description": "Select the first option if it exceeds a given threshold, else the second option.", + "status": "active", + "visibility": "public", + "tags": [ + "select", + "threshold" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.select.threshold", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "List of the input columns to select from.", + "required": true, + "role": "column-selector", + "schema": { + "type": "array" + } + }, + { + "name": "output", + "description": "Name of the output column.", + "required": true, + "role": "column-output", + "schema": { + "type": "string" + } + }, + { + "name": "threshold", + "description": "Threshold above which to choose the first option, otherwise the second.", + "required": true, + "role": "option", + "schema": { + "type": "number", + "minimum": 0, + "maximum": 1 + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Select the first option if it exceeds a given threshold, else the second option.\n\n## Migrated examples\n#### Selecting Results Above a Threshold\n\n##### Recipe\n\n```yaml\nwrangles:\n - select.threshold:\n input:\n - Col1\n - Col2\n output: Result\n threshold: .77\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Col1 | Col2 |\n| --- | --- |\n| ['A', 0.6] | ['B', 0.79] |\n\n
\n\n
\n\n##### Output Sample\n\n| Result |\n| --- |\n| B |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py", + "title": "WranglesPY select.threshold implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/threshold.md", + "title": "Existing select.threshold Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/similarity.json b/wrangles-docs/static/registry/contracts/similarity.json new file mode 100644 index 0000000..670569d --- /dev/null +++ b/wrangles-docs/static/registry/contracts/similarity.json @@ -0,0 +1,117 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "7c733344-4cce-4938-8013-53742fb46a90", + "wrangle_name": "similarity", + "namespace": null, + "wrangle_key": "similarity", + "aliases": [], + "slug": "similarity", + "title": "Similarity", + "description": "Calculate the cosine similarity of two vectors.", + "status": "active", + "visibility": "public", + "tags": [ + "compare", + "similarity" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.main.similarity", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Two columns of vectors to compare the similarity of.", + "required": true, + "role": "column-selector", + "schema": { + "type": "array", + "minItems": 2, + "maxItems": 2 + } + }, + { + "name": "output", + "description": "Name of the output column.", + "required": true, + "role": "column-output", + "schema": { + "type": "string" + } + }, + { + "name": "method", + "description": "The type of similarity to calculate (cosine or euclidean). Adjusted cosine adjusts the default cosine calculation to cover a range of 0-1 for typical comparisons.", + "required": false, + "role": "option", + "runtime_default": "cosine", + "schema": { + "type": "string", + "enum": [ + "cosine", + "adjusted cosine", + "euclidean" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Calculate the similarity of two vectors.\n\n:::info\nSimilarity only works on vectors. To produce vectors from a column of strings, use `create.embeddings` first.\n:::\n\n## Migrated examples\n#### Similarity Between Embeddings\n\n##### Recipe\n\n```yaml\nwrangles:\n - create.embeddings:\n input: col1\n api_key: ${my_key}\n output: col1 embeddings\n\n - create.embeddings:\n input: col2\n api_key: ${my_key}\n output: col2 embeddings\n\n - similarity:\n input:\n - col1 embeddings\n - col2 embeddings\n output: similarity\n method: adjusted cosine\n```\n\n
\n\n
\n\n##### Input Sample\n\n| col1 | col2 |\n| --- | --- |\n| SKF | Timken |\n| Ball Bearing | Roller Bearing |\n\n
\n\n
\n\n##### Output Sample\n\n| col1 | col2 | col1 embeddings | col2 embeddings | similarity |\n| --- | --- | --- | --- | --- |\n| SKF | Timken | [1, 2, 3, 4] | [4, 3, 2, 1] | 0.158931 |\n| Ball Bearing | Roller Bearing | [5, 6, 7, 8] | [5, 6, 7, 9] | 0.942437 |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py", + "title": "WranglesPY similarity implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compare/_sources/similarity.md", + "title": "Existing similarity Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/sort.json b/wrangles-docs/static/registry/contracts/sort.json new file mode 100644 index 0000000..3b51278 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/sort.json @@ -0,0 +1,119 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "1dcf06ad-898a-4d83-862c-4774be37a687", + "wrangle_name": "sort", + "namespace": null, + "wrangle_key": "sort", + "aliases": [], + "slug": "sort", + "title": "Sort", + "description": "Sort the data.", + "status": "active", + "visibility": "public", + "tags": [ + "select", + "sort" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.pandas.sort", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "ignore_index", + "description": "Ignore Index value accepted by the runtime.", + "required": false, + "role": "option", + "runtime_default": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "by", + "description": "Name or list of the column(s) to sort by.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "ascending", + "description": "Sort ascending vs. descending. Specify a list to sort multiple columns in different orders. If this is a list of bools then it must match the length of the by.", + "required": false, + "role": "option", + "schema": { + "type": [ + "boolean", + "array" + ], + "items": { + "type": "boolean" + } + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Sort the data\n\n## Migrated examples\n#### Replacing Abbreviations\n\n##### Recipe\n\n```yaml\nwrangles:\n - sort:\n by: Price\n ascending: true\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Item | Price |\n| --- | --- |\n| Hammer | 11.99 |\n| Chisel | 4.99 |\n| Drill | 29.99 |\n| Wrench | 6.99 |\n| Saw | 13.99 |\n\n
\n\n
\n\n##### Output Sample\n\n| Item | Price |\n| --- | --- |\n| Chisel | 4.99 |\n| Wrench | 6.99 |\n| Hammer | 11.99 |\n| Saw | 13.99 |\n| Drill | 29.99 |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/pandas.py", + "title": "WranglesPY sort implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/sort.md", + "title": "Existing sort Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/split/dictionary.json b/wrangles-docs/static/registry/contracts/split/dictionary.json new file mode 100644 index 0000000..ec8191b --- /dev/null +++ b/wrangles-docs/static/registry/contracts/split/dictionary.json @@ -0,0 +1,136 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "06ca98e4-d026-43f7-84eb-af246d401ba9", + "wrangle_name": "dictionary", + "namespace": "split", + "wrangle_key": "split.dictionary", + "aliases": [], + "slug": "split/dictionary", + "title": "Dictionary", + "description": "Split one or more dictionaries into columns. The dictionary keys will be returned as the new column headers. If the dictionaries contain overlapping values, the last value will be returned.", + "status": "active", + "visibility": "public", + "tags": [ + "split", + "dictionary" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.split.dictionary", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name or lists of the column(s) containing dictionaries to be split. If providing multiple dictionaries and the dictionaries contain overlapping values, the last value will be returned.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "output", + "description": "In columns output_format, this is an optional subset of keys to extract from the dictionary. If not provided, all keys will be returned. Columns can be renamed with the following syntax: output: - key1: new_column_name1 - key2: new_column_name2 In to_lists output_format, this must be two output columns for the keys and values lists. If not provided, Keys and Values will be used.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "default", + "description": "Provide a set of default headings and values if they are not found within the input.", + "required": false, + "role": "fallback-value", + "runtime_default": null, + "schema": { + "type": [ + "object", + "null" + ] + } + }, + { + "name": "output_format", + "description": "How to split the dictionary. columns creates one output column for each dictionary key. to_lists creates two output columns containing lists of keys and values.", + "required": false, + "role": "column-output", + "runtime_default": "columns", + "schema": { + "type": "string", + "enum": [ + "columns", + "to_lists" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Split a dictionary into columns. The dictionary keys are used as the new column headers.\n\n## Migrated examples\n#### Splitting an Entire Dictionary\n\n##### Recipe\n\n```yaml\nwrangles:\n - split.dictionary:\n input: Column\n # Output not required\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Column |\n| --- |\n| \\{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\\} |\n\n
\n\n
\n\n##### Output Sample\n\n| Col1 | Col2 | Col3 |\n| --- | --- | --- |\n| A | B | C |\n\n
\n\n
\n\n#### Choosing Specific Keys by Name\n\n##### Recipe\n\n```yaml\nwrangles:\n - split.dictionary:\n input: Column\n output: Col2\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Column |\n| --- |\n| \\{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\\} |\n\n
\n\n
\n\n##### Output Sample\n\n| Col2 |\n| --- |\n| B |\n\n
\n\n
\n\n#### Using a Wildcard Output to Choose Specific Keys\n\n##### Recipe\n\n```yaml\nwrangles:\n - split.dictionary:\n input: Column\n output: Col*\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Column |\n| --- |\n| \\{'Col1': 'A', 'Col2': 'B', 'Other': 'C'\\} |\n\n
\n\n
\n\n##### Output Sample\n\n| Col1 | Col2 |\n| --- | --- |\n| A | B |\n\n
\n\n
\n\n#### Using Regular Expressions to Choose Specific Keys\n\n##### Recipe\n\n```yaml\nwrangles:\n - split.dictionary:\n input: Column\n output: \"regex: .*3\"\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Column |\n| --- |\n| \\{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\\} |\n\n
\n\n
\n\n##### Output Sample\n\n| Col3 |\n| --- |\n| C |\n\n
\n\n
\n\n#### Choosing Specific Keys While Renaming the Output\n\n##### Recipe\n\n```yaml\nwrangles:\n - split.dictionary:\n input: Column\n output:\n - Col1: Column 1\n - Col2: Column 2\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Column |\n| --- |\n| \\{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\\} |\n\n
\n\n
\n\n##### Output Sample\n\n| Column 1 | Column 2 |\n| --- | --- |\n| A | B |\n\n
\n\n
\n\n#### Using a Wildcard While Renaming\n\n##### Recipe\n\n```yaml\nwrangles:\n - split.dictionary:\n input: Column\n output:\n - Col*: Column *\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Column |\n| --- |\n| \\{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\\} |\n\n
\n\n
\n\n##### Output Sample\n\n| Column 1 | Column 2 | Column 3 |\n| --- | --- | --- |\n| A | B | C |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/split.py", + "title": "WranglesPY split.dictionary implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/split/_sources/dictionary.md", + "title": "Existing split.dictionary Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/split/list.json b/wrangles-docs/static/registry/contracts/split/list.json new file mode 100644 index 0000000..66cd084 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/split/list.json @@ -0,0 +1,106 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "3260b9f7-aae2-499f-8004-d211c2cf643e", + "wrangle_name": "list", + "namespace": "split", + "wrangle_key": "split.list", + "aliases": [], + "slug": "split/list", + "title": "List", + "description": "Split a list in a single column to multiple columns.", + "status": "active", + "visibility": "public", + "tags": [ + "split", + "list" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.split.list", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the column to be split.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer" + ] + } + }, + { + "name": "output", + "description": "Name of column(s) for the results. If providing a single column, use a wildcard (*) to indicate a incrementing integer.", + "required": true, + "role": "column-output", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Split a list into multiple columns. If only one output is given, `split.list` returns the same list it was given, so output should be a list of columns or a column name with a wildcard (`*`).\n\n## Migrated examples\n#### Using a Wildcard\n\n##### Recipe\n\n```yaml\nwrangles:\n - split.list:\n input: Column\n output: Column*\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Column |\n| --- |\n| ['A', 'B', 'C'] |\n\n
\n\n
\n\n##### Output Sample\n\n| Column1 | Column2 | Column3 |\n| --- | --- | --- |\n| A | B | C |\n\n
\n\n
\n\n#### Named Columns\n\n##### Recipe\n\n```yaml\nwrangles:\n - split.list:\n input: Column\n output:\n - Heading A\n - Heading B\n - Heading C\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Column |\n| --- |\n| ['A', 'B', 'C'] |\n\n
\n\n
\n\n##### Output Sample\n\n| Heading A | Heading B | Heading C |\n| --- | --- | --- |\n| A | B | C |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/split.py", + "title": "WranglesPY split.list implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/split/_sources/list.md", + "title": "Existing split.list Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/split/text.json b/wrangles-docs/static/registry/contracts/split/text.json new file mode 100644 index 0000000..59103ce --- /dev/null +++ b/wrangles-docs/static/registry/contracts/split/text.json @@ -0,0 +1,162 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "e76e43f7-d129-4bf8-87b4-a304a378b130", + "wrangle_name": "text", + "namespace": "split", + "wrangle_key": "split.text", + "aliases": [], + "slug": "split/text", + "title": "Text", + "description": "Split a string to multiple columns or a list.", + "status": "active", + "visibility": "public", + "tags": [ + "split", + "text" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.split.text", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the column to be split.", + "required": true, + "role": "column-selector", + "schema": { + "type": "string" + } + }, + { + "name": "output", + "description": "Name of the output column(s) If a single column is provided, the results will be returned as a list If multiple columns are listed, the results will be separated into the columns. If omitted, will overwrite the input.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "char", + "description": "Set the character(s) to split on. Default comma (,) Can also prefix with \"regex:\" to split on a pattern.", + "required": false, + "role": "option", + "runtime_default": ",", + "schema": { + "type": "string" + } + }, + { + "name": "pad", + "description": "Choose whether to pad to ensure a consistent length. Default true if outputting to columns, false for lists.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "boolean", + "null" + ] + } + }, + { + "name": "element", + "description": "Select a specific element or range after splitting using slicing syntax. e.g. 0, \":5\", \"5:\", \"2:8:2\".", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "string", + "integer", + "null" + ] + } + }, + { + "name": "inclusive", + "description": "If true, include the split character in the output. Default False.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "skip_empty", + "description": "Whether to skip empty values.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Split text strings on certain characters. The text can be split into either multiple columns or a list.\n\n## Migrated examples\n#### To a List\n\n##### Recipe\n\n```yaml\nwrangles:\n - split.text:\n input: Column1\n output: Column2\n char: ', '\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Column1 |\n| --- |\n| Hello, Wrangles! |\n\n
\n\n
\n\n##### Output Sample\n\n| Column2 |\n| --- |\n| ['Hello', 'Wrangles!'] |\n\n
\n\n
\n\n#### Split Using Regex\n\n##### Recipe\n\n```yaml\n# Split on x, case insensitive.\nwrangles:\n - split.text:\n input: Col1\n output: Col2\n char: 'regex:(?i)x'\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Col1 |\n| --- |\n| 1x2 |\n| 1X2 |\n\n
\n\n
\n\n##### Output Sample\n\n| Col2 |\n| --- |\n| ['1', '2'] |\n| ['1', '2'] |\n\n
\n\n
\n\n#### Slice the Output\n\n##### Recipe\n\n```yaml\nwrangles:\n - split.text:\n input: Column1\n output: Column2\n char: ', '\n element: 0\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Column1 |\n| --- |\n| Hello, Wrangles! |\n\n
\n\n
\n\n##### Output Sample\n\n| Column2 |\n| --- |\n| Hello |\n\n
\n\n
\n\n#### Split to Columns (Wildcard)\n\n##### Recipe\n\n```yaml\nwrangles:\n - split.text:\n input: Col\n output: Col* # Optional\n char: ', '\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Col |\n| --- |\n| Hello, Wrangles! |\n\n
\n\n
\n\n##### Output Sample\n\n| Col1 | Col2 |\n| --- | --- |\n| Hello | Wrangles! |\n\n
\n\n
\n\n#### Split to Columns (Named)\n\n##### Recipe\n\n```yaml\nwrangles:\n - split.text:\n input: Col\n output:\n - Col 1\n - Col 2\n - Col 3\n char: ', '\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Col |\n| --- |\n| Wrangles, are, Cool! |\n\n
\n\n
\n\n##### Output Sample\n\n| Col 1 | Col 2 | Col 3 |\n| --- | --- | --- |\n| Wrangles | are | Cool! |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/split.py", + "title": "WranglesPY split.text implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/split/_sources/text.md", + "title": "Existing split.text Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/split/tokenize.json b/wrangles-docs/static/registry/contracts/split/tokenize.json new file mode 100644 index 0000000..9c38c37 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/split/tokenize.json @@ -0,0 +1,131 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "6cc88418-ae0c-43f6-84ee-31e0d5f838c3", + "wrangle_name": "tokenize", + "namespace": "split", + "wrangle_key": "split.tokenize", + "aliases": [], + "slug": "split/tokenize", + "title": "Tokenize", + "description": "Split text into tokens. A variety of methods are available. The default method is to split on spaces.", + "status": "active", + "visibility": "public", + "tags": [ + "split", + "tokenize" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.split.tokenize", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Column(s) to be split into tokens.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "output", + "description": "Name of the output column.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "method", + "description": "Method to split the list. Options include `space`, `boundary`, `boundary_ignore_space`, custom functions as `custom.`, or regex patterns as `regex:`.", + "required": false, + "role": "option", + "runtime_default": "space", + "schema": { + "anyOf": [ + { + "type": "string", + "enum": [ + "space", + "boundary", + "boundary_ignore_space" + ] + }, + { + "type": "string" + } + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Tokenize elements in a list or string into individual tokens.\n\n## Migrated examples\n#### Tokenizing a String\n\n##### Recipe\n\n```yaml\nwrangles:\n - split.tokenize:\n input: Materials\n output: Tokenized List\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Materials |\n| --- |\n| Stainless Steel Oak Wood |\n\n
\n\n
\n\n##### Output Sample\n\n| Tokenized List |\n| --- |\n| ['Stainless', 'Steel', 'Oak', 'Wood'] |\n\n
\n\n
\n\n\n#### Tokenizing a List\n\n##### Recipe\n\n```yaml\nwrangles:\n - split.tokenize:\n input: Materials\n output: Tokenized List\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Materials |\n| --- |\n| ['Stainless Steel', 'Oak Wood'] |\n\n
\n\n
\n\n##### Output Sample\n\n| Tokenized List |\n| --- |\n| ['Stainless', 'Steel', 'Oak', 'Wood'] |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/split.py", + "title": "WranglesPY split.tokenize implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/split/_sources/tokenize.md", + "title": "Existing split.tokenize Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/sql.json b/wrangles-docs/static/registry/contracts/sql.json new file mode 100644 index 0000000..21e996d --- /dev/null +++ b/wrangles-docs/static/registry/contracts/sql.json @@ -0,0 +1,125 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "467a06b1-a697-4d31-8061-7d83a719fd79", + "wrangle_name": "sql", + "namespace": null, + "wrangle_key": "sql", + "aliases": [], + "slug": "sql", + "title": "SQL", + "description": "Apply a SQL command to the current dataframe. Only SELECT statements are supported - the result will be the output.", + "status": "active", + "visibility": "public", + "tags": [ + "compute", + "sql" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.main.sql", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "command", + "description": "SQL Command. The table is called df. For specific SQL syntax, this uses the SQLite dialect.", + "required": true, + "role": "option", + "schema": { + "type": "string" + } + }, + { + "name": "params", + "description": "Variables to use in conjunctions with query. This allows the query to be parameterized. This uses sqlite syntax (? or :name).", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "array", + "object", + "null" + ] + } + }, + { + "name": "preserve_index", + "description": "Preserve Index value accepted by the runtime.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "preserve_data_types", + "description": "Preserve Data Types value accepted by the runtime.", + "required": false, + "role": "option", + "runtime_default": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Apply a SQL command to the current dataframe. Only `SELECT` statements are supported; the result becomes the output. The current table is called `df`.\n\n:::info\nSQL does not currently work with objects. If your table contains objects, use `convert.to_json` before using SQL. SQL is not compatible with `where` filtering.\n:::\n\n## Migrated examples\n#### Selecting a Subset of Data\n\n##### Recipe\n\n```yaml\nwrangles:\n - sql:\n command: |\n SELECT header1, header2\n FROM df\n WHERE header1 >= 2\n```\n\n
\n\n
\n\n##### Input Sample\n\n| header1 | header2 | header3 |\n| --- | --- | --- |\n| 1 | a | x |\n| 2 | b | y |\n| 3 | c | z |\n\n
\n\n
\n\n##### Output Sample\n\n| header1 | header2 |\n| --- | --- |\n| 2 | b |\n| 3 | c |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py", + "title": "WranglesPY sql implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compute/_sources/sql.md", + "title": "Existing sql Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/standardize.json b/wrangles-docs/static/registry/contracts/standardize.json new file mode 100644 index 0000000..d3fbb88 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/standardize.json @@ -0,0 +1,131 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "53cd3fdd-24e2-4411-8655-6014b92a3f3a", + "wrangle_name": "standardize", + "namespace": null, + "wrangle_key": "standardize", + "aliases": [], + "slug": "standardize", + "title": "Standardize", + "description": "Standardize data using a DIY or bespoke standardization wrangle. Requires WrangleWorks Account and Subscription.", + "status": "active", + "visibility": "public", + "tags": [ + "format", + "standardize" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.main.standardize", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": true, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name or list of input columns.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "model_id", + "description": "The ID of the wrangle to use (do not include 'find' and 'replace').", + "required": true, + "role": "model-reference", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "output", + "description": "Name or list of output columns.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "case_sensitive", + "description": "Allows the wrangle to be case sensitive if set to True, default is False.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Run a standardize wrangle, such as one that expands abbreviations. A standardization wrangle must be trained first.\n\n## Migrated examples\n#### Replacing Abbreviations\n\n##### Recipe\n\n```yaml\nwrangles:\n - standardize:\n input: Abbrev\n output: Abbreviations\n model_id: code_here\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Abbrev |\n| --- |\n| ASAP |\n| ETA |\n\n
\n\n
\n\n##### Output Sample\n\n| Abbreviations |\n| --- |\n| As Soon As Possible |\n| Estimated Time of Arrival |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py", + "title": "WranglesPY standardize implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/standardize.md", + "title": "Existing standardize Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/standardize/clean.json b/wrangles-docs/static/registry/contracts/standardize/clean.json new file mode 100644 index 0000000..1c4828e --- /dev/null +++ b/wrangles-docs/static/registry/contracts/standardize/clean.json @@ -0,0 +1,222 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": null, + "wrangle_name": "clean", + "namespace": "standardize", + "wrangle_key": "standardize.clean", + "aliases": [], + "slug": "standardize/clean", + "title": "Standardize Clean", + "description": "Repair common encoding, Unicode, HTML character reference, control character, and whitespace problems locally.", + "status": "active", + "visibility": "public", + "tags": [ + "standardize", + "clean" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.standardize.clean", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name or list of input columns.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "output", + "description": "Name or list of output columns. Defaults to overwriting input.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "integer", + "array", + "null" + ] + } + }, + { + "name": "fix_encoding", + "description": "Repair mojibake and other reversible encoding errors.", + "required": false, + "role": "option", + "runtime_default": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "unescape_html", + "description": "Decode HTML character references. Auto avoids decoding text that appears to contain HTML markup.", + "required": false, + "role": "option", + "runtime_default": "auto", + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "string", + "enum": [ + "auto" + ] + } + ] + } + }, + { + "name": "normalization", + "description": "Unicode normalization form.", + "required": false, + "role": "option", + "runtime_default": "NFC", + "schema": { + "type": "string", + "enum": [ + "NFC", + "NFKC", + "NFD", + "NFKD", + null + ] + } + }, + { + "name": "fix_character_width", + "description": "Normalize fullwidth and halfwidth characters.", + "required": false, + "role": "option", + "runtime_default": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "uncurl_quotes", + "description": "Replace typographic quotes with straight quotes.", + "required": false, + "role": "option", + "runtime_default": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "remove_control_chars", + "description": "Remove C0 and C1 control characters.", + "required": false, + "role": "option", + "runtime_default": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "collapse_whitespace", + "description": "Collapse runs of Unicode whitespace.", + "required": false, + "role": "option", + "runtime_default": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "preserve_line_breaks", + "description": "Preserve line breaks while collapsing other whitespace.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "trim", + "description": "Remove leading and trailing whitespace.", + "required": false, + "role": "option", + "runtime_default": true, + "schema": { + "type": "boolean" + } + }, + { + "name": "separator", + "description": "Text used to join multiple input columns into one output.", + "required": false, + "role": "option", + "runtime_default": " ", + "schema": { + "type": "string" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "## Behavior\n\nRepair common encoding, Unicode, HTML character reference, control character, and whitespace problems locally.\n\nThis first-pass guidance is derived from the callable signature and its embedded Python schema docstring.", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/standardize.py", + "title": "WranglesPY standardize.clean implementation" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/standardize/custom.json b/wrangles-docs/static/registry/contracts/standardize/custom.json new file mode 100644 index 0000000..114751c --- /dev/null +++ b/wrangles-docs/static/registry/contracts/standardize/custom.json @@ -0,0 +1,126 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": null, + "wrangle_name": "custom", + "namespace": "standardize", + "wrangle_key": "standardize.custom", + "aliases": [], + "slug": "standardize/custom", + "title": "Standardize Custom", + "description": "Standardize data using a DIY or bespoke standardization wrangle. Requires WrangleWorks Account and Subscription.", + "status": "active", + "visibility": "public", + "tags": [ + "standardize", + "custom" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.standardize.custom", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": true, + "requires_subscription": true, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name or list of input columns.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "model_id", + "description": "The ID of the wrangle to use (do not include 'find' and 'replace').", + "required": true, + "role": "model-reference", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "output", + "description": "Name or list of output columns.", + "required": false, + "role": "column-output", + "runtime_default": null, + "schema": { + "type": [ + "string", + "array", + "null" + ] + } + }, + { + "name": "case_sensitive", + "description": "Allows the wrangle to be case sensitive if set to True, default is False.", + "required": false, + "role": "option", + "runtime_default": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "## Behavior\n\nStandardize data using a DIY or bespoke standardization wrangle. Requires WrangleWorks Account and Subscription.\n\nThis first-pass guidance is derived from the callable signature and its embedded Python schema docstring.", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/standardize.py", + "title": "WranglesPY standardize.custom implementation" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/translate.json b/wrangles-docs/static/registry/contracts/translate.json new file mode 100644 index 0000000..b169e2b --- /dev/null +++ b/wrangles-docs/static/registry/contracts/translate.json @@ -0,0 +1,194 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "73c3ceb6-ffd8-4d74-8389-c83b99d33bb0", + "wrangle_name": "translate", + "namespace": null, + "wrangle_key": "translate", + "aliases": [], + "slug": "translate", + "title": "Translate", + "description": "Translate the input to a different language. Requires WrangleWorks Account and DeepL API Key (A free account for up to 500,000 characters per month is available).", + "status": "active", + "visibility": "public", + "tags": [ + "format", + "translate" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.main.translate", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": true, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "input", + "description": "Name of the column to translate.", + "required": true, + "role": "column-selector", + "schema": { + "type": [ + "string", + "integer", + "array" + ] + } + }, + { + "name": "output", + "description": "Name of the output column.", + "required": true, + "role": "column-output", + "schema": { + "type": [ + "string", + "array" + ] + } + }, + { + "name": "target_language", + "description": "Code of the language to translate to.", + "required": true, + "role": "option", + "schema": { + "type": "string", + "enum": [ + "Bulgarian", + "Chinese", + "Czech", + "Danish", + "Dutch", + "English (American)", + "English (British)", + "Estonian", + "Finnish", + "French", + "German", + "Greek", + "Hungarian", + "Italian", + "Japanese", + "Latvian", + "Lithuanian", + "Polish", + "Portuguese", + "Portuguese (Brazilian)", + "Romanian", + "Russian", + "Slovak", + "Slovenian", + "Spanish", + "Swedish" + ] + } + }, + { + "name": "source_language", + "description": "Code of the language to translate from. If omitted, automatically detects the input language.", + "required": false, + "role": "option", + "runtime_default": "AUTO", + "schema": { + "type": "string", + "enum": [ + "Auto", + "Bulgarian", + "Chinese", + "Czech", + "Danish", + "Dutch", + "English", + "Estonian", + "Finnish", + "French", + "German", + "Greek", + "Hungarian", + "Italian", + "Japanese", + "Latvian", + "Lithuanian", + "Polish", + "Portuguese", + "Romanian", + "Russian", + "Slovak", + "Slovenian", + "Spanish", + "Swedish" + ] + } + }, + { + "name": "case", + "description": "Allow changing the case of the input prior to translation.", + "required": false, + "role": "option", + "runtime_default": null, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Translate the input column to another language. Powered by DeepL.\n\n## Migrated examples\n#### Translating Spanish to English\n\n##### Recipe\n\n```yaml\nwrangles:\n - translate:\n input: Español\n output: English\n source_language: Spanish\n target_language: English (British)\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Español |\n| --- |\n| ¡Hola Mundo! |\n\n
\n\n
\n\n##### Output Sample\n\n| English |\n| --- |\n| Hello World! |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py", + "title": "WranglesPY translate implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/translate.md", + "title": "Existing translate Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/transpose.json b/wrangles-docs/static/registry/contracts/transpose.json new file mode 100644 index 0000000..dc1deb4 --- /dev/null +++ b/wrangles-docs/static/registry/contracts/transpose.json @@ -0,0 +1,96 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": "8716347f-f286-49b2-8a0b-cb73292e7475", + "wrangle_name": "transpose", + "namespace": null, + "wrangle_key": "transpose", + "aliases": [], + "slug": "transpose", + "title": "Transpose", + "description": "Transpose the DataFrame (swap columns to rows).", + "status": "active", + "visibility": "public", + "tags": [ + "transform", + "transpose" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.pandas.transpose", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "header_column", + "description": "Name or position of the column that will be used as the column headings for the transposed DataFrame. Default 0 (first column). Use header_column = null to not use any column as header.", + "required": false, + "role": "column-selector", + "runtime_default": 0, + "schema": { + "type": [ + "string", + "integer", + "null" + ] + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Transpose a dataframe.\n\n## Migrated examples\n:::note\nTranspose is not compatible with `where` filtering.\n:::\n\n#### Transposing a Dataframe\n\n##### Recipe\n\n```yaml\nwrangles:\n - transpose:\n header_column: Material\n```\n\n
\n\n
\n\n##### Input Sample\n\n| Material | Product Data |\n| --- | --- |\n| Ceramic | SKF ball brg |\n| Rubber | brg seal |\n\n
\n\n
\n\n##### Output Sample\n\n| Material | Ceramic | Rubber |\n| --- | --- | --- |\n| Product Data | SKF ball brg | brg seal |\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/pandas.py", + "title": "WranglesPY transpose implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/transform/_sources/transpose.md", + "title": "Existing transpose Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/contracts/try.json b/wrangles-docs/static/registry/contracts/try.json new file mode 100644 index 0000000..4b4f1bd --- /dev/null +++ b/wrangles-docs/static/registry/contracts/try.json @@ -0,0 +1,119 @@ +{ + "format": "wrangles-registry-entry", + "registry_version": "0.1.0-pilot", + "schema_version": "0.1", + "type": "wrangle", + "id": null, + "wrangle_name": "try", + "namespace": null, + "wrangle_key": "try", + "aliases": [], + "slug": "try", + "title": "Try", + "description": "Try a list of wrangles and catch any errors that occur.", + "status": "active", + "visibility": "public", + "tags": [ + "utility", + "try" + ], + "runtime": { + "package": "wrangles", + "symbol": "wrangles.recipe_wrangles.main.Try", + "contract_status": "verified" + }, + "access": { + "ai_powered": false, + "requires_account": false, + "requires_subscription": false, + "requires_external_api_key": false + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "parameters": [ + { + "name": "wrangles", + "description": "List of wrangles to apply.", + "required": true, + "role": "nested-wrangles", + "schema": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/$defs/wrangles/items" + } + } + }, + { + "name": "retries", + "description": "Number of times to retry the wrangles if an error occurs. Default 0.", + "required": false, + "role": "option", + "runtime_default": 0, + "schema": { + "type": "integer", + "minimum": 0 + } + }, + { + "name": "except", + "description": "An action to take if the wrangles encounter an error. This can contain a list of wrangles or a dictionary of column names and values. If except is not provided, the error will be logged and the recipe will continue.", + "required": false, + "role": "option", + "schema": { + "type": "object", + "minItems": 1, + "items": { + "$ref": "#/$defs/wrangles/items" + } + } + }, + { + "name": "if", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`.", + "required": false, + "schema": { + "type": "string" + }, + "role": "common-control" + }, + { + "name": "where_params", + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`.", + "required": false, + "schema": { + "type": [ + "array", + "object" + ] + }, + "role": "common-control" + } + ], + "examples": [], + "guidance": "Run a list of wrangles and catch errors. When `except` is provided, its wrangles or fallback column values run after an error; otherwise, the error is logged and the recipe continues.\n\n## Migrated examples\n#### Use Fallback Wrangles After an Error\n\n##### Recipe\n\n```yaml\nwrangles:\n - try:\n wrangles:\n - risky_wrangle:\n input: column\n except:\n - backup_wrangle:\n input: column\n```\n\n
\n\n
\n\n##### Input Sample\n\n_The input dataframe is passed to the primary wrangles._\n\n
\n\n
\n\n##### Output Sample\n\n_The primary result is returned on success; the `except` result is returned after an error._\n\n
\n\n
", + "sources": [ + { + "id": "runtime", + "resource": "https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py", + "title": "WranglesPY try implementation" + }, + { + "id": "quasi-registry", + "resource": "https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/utility/_sources/try.md", + "title": "Existing try Markdown" + } + ] +} diff --git a/wrangles-docs/static/registry/fixtures/convert.case/uppercase-output.input.json b/wrangles-docs/static/registry/fixtures/convert.case/uppercase-output.input.json new file mode 100644 index 0000000..1f39714 --- /dev/null +++ b/wrangles-docs/static/registry/fixtures/convert.case/uppercase-output.input.json @@ -0,0 +1,8 @@ +[ + { + "product": "Cordless Drill" + }, + { + "product": "bearing seal" + } +] diff --git a/wrangles-docs/static/registry/fixtures/convert.case/uppercase-output.output.json b/wrangles-docs/static/registry/fixtures/convert.case/uppercase-output.output.json new file mode 100644 index 0000000..e054659 --- /dev/null +++ b/wrangles-docs/static/registry/fixtures/convert.case/uppercase-output.output.json @@ -0,0 +1,10 @@ +[ + { + "product": "Cordless Drill", + "product_upper": "CORDLESS DRILL" + }, + { + "product": "bearing seal", + "product_upper": "BEARING SEAL" + } +] diff --git a/wrangles-docs/static/registry/fixtures/convert.data_type/integer-with-fallback.input.json b/wrangles-docs/static/registry/fixtures/convert.data_type/integer-with-fallback.input.json new file mode 100644 index 0000000..189399d --- /dev/null +++ b/wrangles-docs/static/registry/fixtures/convert.data_type/integer-with-fallback.input.json @@ -0,0 +1,8 @@ +[ + { + "quantity": "12" + }, + { + "quantity": "not available" + } +] diff --git a/wrangles-docs/static/registry/fixtures/convert.data_type/integer-with-fallback.output.json b/wrangles-docs/static/registry/fixtures/convert.data_type/integer-with-fallback.output.json new file mode 100644 index 0000000..4ba685c --- /dev/null +++ b/wrangles-docs/static/registry/fixtures/convert.data_type/integer-with-fallback.output.json @@ -0,0 +1,10 @@ +[ + { + "quantity": "12", + "quantity_integer": 12 + }, + { + "quantity": "not available", + "quantity_integer": 0 + } +] diff --git a/wrangles-docs/static/registry/fixtures/convert.from_json/parse-structured-values.input.json b/wrangles-docs/static/registry/fixtures/convert.from_json/parse-structured-values.input.json new file mode 100644 index 0000000..2b6b562 --- /dev/null +++ b/wrangles-docs/static/registry/fixtures/convert.from_json/parse-structured-values.input.json @@ -0,0 +1,8 @@ +[ + { + "attributes_json": "{\"material\":\"steel\",\"voltage\":18}" + }, + { + "attributes_json": "[\"corded\",\"variable speed\"]" + } +] diff --git a/wrangles-docs/static/registry/fixtures/convert.from_json/parse-structured-values.output.json b/wrangles-docs/static/registry/fixtures/convert.from_json/parse-structured-values.output.json new file mode 100644 index 0000000..1027914 --- /dev/null +++ b/wrangles-docs/static/registry/fixtures/convert.from_json/parse-structured-values.output.json @@ -0,0 +1,16 @@ +[ + { + "attributes_json": "{\"material\":\"steel\",\"voltage\":18}", + "attributes": { + "material": "steel", + "voltage": 18 + } + }, + { + "attributes_json": "[\"corded\",\"variable speed\"]", + "attributes": [ + "corded", + "variable speed" + ] + } +] diff --git a/wrangles-docs/static/registry/index.md b/wrangles-docs/static/registry/index.md new file mode 100644 index 0000000..61f435c --- /dev/null +++ b/wrangles-docs/static/registry/index.md @@ -0,0 +1,112 @@ +--- +okf_version: "0.2" +type: collection +title: Wrangles Registry +description: Public pilot bundle for Wrangles recipe primitives. +status: pilot +registry_version: 0.1.0-pilot +--- + +# Wrangles Registry + +This is the public, agent-readable pilot bundle. Use `manifest.json` for +structured discovery. + +- [`accordion`](wrangles/_root/accordion.md): Apply a series of wrangles to column(s) containing lists. The wrangles will be applied to each element in the list and the results will be returned back as a list. +- [`batch`](wrangles/_root/batch.md): Split the data into batches for executing a list of wrangles. Use this in situations such as where the intermediate data is too large to fit in memory. +- [`classify`](wrangles/_root/classify.md): Run classify wrangles on the specified columns. Requires WrangleWorks Account and Subscription. +- [`clean_whitespaces`](wrangles/_root/clean-whitespaces.md): Condense multiple spaces to a single space and convert special space characters to a standard space. +- [`compare.lists`](wrangles/compare/lists.md): Compare multiple lists and return the intersection, difference, or union. +- [`compare.text`](wrangles/compare/text.md): Compare two strings and return the intersection or difference, use overlap to find the matching characters between the two strings, or use similarity to get a numeric similarity score. +- [`compute.case_when`](wrangles/compute/case-when.md): Assign values to a column based on conditional logic. +- [`compute.score_search_results`](wrangles/compute/score-search-results.md): Scores and filters search results based on progressive partial/exact matching. Can return dictionaries or a parallel list of formatted strings. +- [`concurrent`](wrangles/_root/concurrent.md): Run multiple wrangles concurrently rather than sequentially. Wrangles must specify output columns to be used concurrently. When using concurrent, Wrangles may not complete in a predictable order and it is not recommended to update overlapping columns with different wrangles. +- [`convert.case`](wrangles/convert/case.md): Change the letter case of text values. +- [`convert.data_type`](wrangles/convert/data-type.md): Convert values to strings, numbers, booleans, or datetimes. +- [`convert.fraction_to_decimal`](wrangles/convert/fraction-to-decimal.md): Convert fractions to decimals. +- [`convert.from_json`](wrangles/convert/from-json.md): Parse JSON text into lists, objects, scalars, booleans, or null values. +- [`convert.from_yaml`](wrangles/convert/from-yaml.md): Convert a YAML representation into an object. +- [`convert.to_json`](wrangles/convert/to-json.md): Convert an object to a JSON representation. +- [`convert.to_yaml`](wrangles/convert/to-yaml.md): Convert an object to a YAML representation. +- [`copy`](wrangles/_root/copy.md): Make a copy of a column or a list of columns. +- [`create.bins`](wrangles/create/bins.md): Create a column that groups data into bins. +- [`create.column`](wrangles/create/column.md): Create column(s) with a user defined value. Defaults to None (empty). +- [`create.embeddings`](wrangles/create/embeddings.md): Create an embedding based on text input. +- [`create.guid`](wrangles/create/guid.md): Create column(s) with a GUID. +- [`create.hash`](wrangles/create/hash.md): Create a hash of a column. +- [`create.index`](wrangles/create/index.md): Create column(s) with an incremental index. e.g. 1,2,3... +- [`create.jinja`](wrangles/create/jinja.md): Output text using a jinja template. +- [`create.uuid`](wrangles/create/uuid.md): Create column(s) with a UUID. +- [`date_calculator`](wrangles/_root/date-calculator.md): Add or Subtract time from a date. +- [`drop`](wrangles/_root/drop.md): Drop (Delete) selected column(s). +- [`explode`](wrangles/_root/explode.md): Explode a column of lists into rows. +- [`extract.address`](wrangles/extract/address.md): Extract parts of addresses. Requires WrangleWorks Account. +- [`extract.ai`](wrangles/extract/ai.md): Extract structured data from each input row using an AI model. Define the desired fields with output, or reuse a saved definition with model_id. +- [`extract.attributes`](wrangles/extract/attributes.md): Extract numeric attributes from the input such as weights or lengths. Requires WrangleWorks Account. +- [`extract.brackets`](wrangles/extract/brackets.md): Extract text properties in brackets from the input. +- [`extract.codes`](wrangles/extract/codes.md): Extract alphanumeric codes from the input. Requires WrangleWorks Account. +- [`extract.custom`](wrangles/extract/custom.md): Extract data from the input using a DIY or bespoke extraction wrangle. Requires WrangleWorks Account and Subscription. +- [`extract.date_properties`](wrangles/extract/date-properties.md): Extract date properties from a date (day, month, year, etc...). +- [`extract.date_range`](wrangles/extract/date-range.md): Extract date range frequency from two dates. +- [`extract.html`](wrangles/extract/html.md): Extract elements from strings containing html. Requires WrangleWorks Account. +- [`extract.properties`](wrangles/extract/properties.md): Extract text properties from the input. Requires WrangleWorks Account. +- [`extract.regex`](wrangles/extract/regex.md): Extract matches or specific capture groups using regex. +- [`filter`](wrangles/_root/filter.md): Filter the dataframe based on the contents. If multiple filters are specified, all must be correct. For complex filters, use the where parameter. +- [`format.dates`](wrangles/format/dates.md): Format a date. +- [`format.pad`](wrangles/format/pad.md): Pad a string to a fixed length. +- [`format.prefix`](wrangles/format/prefix.md): Add a prefix to a column. +- [`format.price_breaks`](wrangles/format/price-breaks.md): Expand non-empty price-break cells into paired category and value columns. +- [`format.remove_duplicates`](wrangles/format/remove-duplicates.md): Remove duplicates from a list. Preserves input order. +- [`format.significant_figures`](wrangles/format/significant-figures.md): Format a value to a specific number of significant figures. +- [`format.suffix`](wrangles/format/suffix.md): Add a suffix to a column. +- [`format.trim`](wrangles/format/trim.md): Remove excess whitespace at the start and end of text. +- [`generate.ai`](wrangles/generate/ai.md): Generate structured AI output for each recipe row. +- [`huggingface`](wrangles/_root/huggingface.md): Use a model from huggingface. +- [`log`](wrangles/_root/log.md): Log the current status of the dataframe. +- [`lookup`](wrangles/_root/lookup.md): Lookup values from a saved lookup wrangle. +- [`math`](wrangles/_root/math.md): Apply a mathematical calculation. +- [`maths`](wrangles/_root/maths.md): Deprecated alias for `math`; evaluate an expression and write its result to an output column. +- [`matrix`](wrangles/_root/matrix.md): Apply a matrix of wrangles to the dataframe. This will run the wrangles for each combination of the variables. +- [`merge.coalesce`](wrangles/merge/coalesce.md): Take the first non-empty value from a series of columns or lists. +- [`merge.concatenate`](wrangles/merge/concatenate.md): Concatenate a list of columns or a list within a single column. +- [`merge.dictionaries`](wrangles/merge/dictionaries.md): Take dictionaries in multiple columns and merge them to a single dictionary. +- [`merge.key_value_pairs`](wrangles/merge/key-value-pairs.md): Create a dictionary from keys and values in paired columns e.g. COLUMN_NAME_1, COLUMN_VALUE_1, COLUMN_NAME_2, COLUMN_VALUE_2 ... +- [`merge.lists`](wrangles/merge/lists.md): Take lists in multiple columns and merge them to a single list. +- [`merge.to_dict`](wrangles/merge/to-dict.md): Take multiple columns and merge them to a dictionary (aka object) using the column headers as keys. +- [`merge.to_list`](wrangles/merge/to-list.md): Take multiple columns and merge them to a list. +- [`python`](wrangles/_root/python.md): Apply a simple single-line python command. For more complex python use a custom function. Note, this evaluates the python command - be especially cautious including variables from untrusted sources within the command string. The python command will be evaluated once for each row and the result returned. Reference column values by using their name. Non-alphanumeric characters within column names are replaced by underscores (_) Additionally, all columns are available as a dict named kwargs. Additional parameters set for the wrangle will also be available to the command. +- [`recipe`](wrangles/_root/recipe.md): Run another recipe as a wrangle against the current dataframe. +- [`reindex`](wrangles/_root/reindex.md): Changes the row labels and column labels of a DataFrame. +- [`remove_words`](wrangles/_root/remove-words.md): Remove all the elements that occur in one list from another. +- [`rename`](wrangles/_root/rename.md): Rename a column or list of columns. +- [`replace`](wrangles/_root/replace.md): Quick find and replace for simple values. Can use regex if 'input' in params and isinstance(params['input'], list):in the find field. +- [`round`](wrangles/_root/round.md): Round column(s) to the specified decimals. +- [`search.find_links`](wrangles/search/find-links.md): Perform web searches to find links. Returns structured search results with titles, links, snippets, and optional pricing. +- [`search.retrieve_link_content`](wrangles/search/retrieve-link-content.md): Retrieves targeted content from web pages using LLM URL extraction. Can optionally output a second column containing a clean, human-readable text summary of the retrieved data. +- [`select.columns`](wrangles/select/columns.md): Select columns from the dataframe. +- [`select.dictionary_element`](wrangles/select/dictionary-element.md): Select one or more element of a dictionary. +- [`select.element`](wrangles/select/element.md): Select elements of lists or dicts using python syntax like col[0]['key']. +- [`select.group_by`](wrangles/select/group-by.md): Group and aggregate the data. +- [`select.head`](wrangles/select/head.md): Return the first n rows. +- [`select.highest_confidence`](wrangles/select/highest-confidence.md): Select the option with the highest confidence from multiple columns. Inputs are expected to be of the form [<>, <>]. +- [`select.left`](wrangles/select/left.md): Return characters from the left of text. Strings shorter than the length defined will be unaffected. +- [`select.length`](wrangles/select/length.md): Calculate the lengths of data in a column. The length depends on the data type e.g. text will be the length of the text, lists will be the number of elements in the list. +- [`select.list_element`](wrangles/select/list-element.md): Select a numbered element of a list (zero indexed). +- [`select.right`](wrangles/select/right.md): Return characters from the right of text. Strings shorter than the length defined will be unaffected. +- [`select.sample`](wrangles/select/sample.md): Return a random sample of the rows. +- [`select.substring`](wrangles/select/substring.md): Return characters from the middle of text. +- [`select.tail`](wrangles/select/tail.md): Return the last n rows. +- [`select.threshold`](wrangles/select/threshold.md): Select the first option if it exceeds a given threshold, else the second option. +- [`similarity`](wrangles/_root/similarity.md): Calculate the cosine similarity of two vectors. +- [`sort`](wrangles/_root/sort.md): Sort the data. +- [`split.dictionary`](wrangles/split/dictionary.md): Split one or more dictionaries into columns. The dictionary keys will be returned as the new column headers. If the dictionaries contain overlapping values, the last value will be returned. +- [`split.list`](wrangles/split/list.md): Split a list in a single column to multiple columns. +- [`split.text`](wrangles/split/text.md): Split a string to multiple columns or a list. +- [`split.tokenize`](wrangles/split/tokenize.md): Split text into tokens. A variety of methods are available. The default method is to split on spaces. +- [`sql`](wrangles/_root/sql.md): Apply a SQL command to the current dataframe. Only SELECT statements are supported - the result will be the output. +- [`standardize`](wrangles/_root/standardize.md): Standardize data using a DIY or bespoke standardization wrangle. Requires WrangleWorks Account and Subscription. +- [`standardize.clean`](wrangles/standardize/clean.md): Repair common encoding, Unicode, HTML character reference, control character, and whitespace problems locally. +- [`standardize.custom`](wrangles/standardize/custom.md): Standardize data using a DIY or bespoke standardization wrangle. Requires WrangleWorks Account and Subscription. +- [`translate`](wrangles/_root/translate.md): Translate the input to a different language. Requires WrangleWorks Account and DeepL API Key (A free account for up to 500,000 characters per month is available). +- [`transpose`](wrangles/_root/transpose.md): Transpose the DataFrame (swap columns to rows). +- [`try`](wrangles/_root/try.md): Try a list of wrangles and catch any errors that occur. diff --git a/wrangles-docs/static/registry/manifest.json b/wrangles-docs/static/registry/manifest.json new file mode 100644 index 0000000..ab425e4 --- /dev/null +++ b/wrangles-docs/static/registry/manifest.json @@ -0,0 +1,2172 @@ +{ + "format": "wrangles-registry", + "registry_version": "0.1.0-pilot", + "contract_version": "0.1", + "status": "pilot", + "entry_count": 98, + "entries": [ + { + "type": "wrangle", + "id": null, + "wrangle_name": "accordion", + "namespace": null, + "wrangle_key": "accordion", + "aliases": [], + "slug": "accordion", + "title": "Accordion", + "description": "Apply a series of wrangles to column(s) containing lists. The wrangles will be applied to each element in the list and the results will be returned back as a list.", + "status": "active", + "tags": [ + "utility", + "accordion" + ], + "route": "/wrangles/accordion", + "contract_json": "/registry/contracts/accordion.json", + "raw_markdown": "/registry/wrangles/_root/accordion.md", + "runtime_symbol": "wrangles.recipe_wrangles.main.accordion", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": null, + "wrangle_name": "batch", + "namespace": null, + "wrangle_key": "batch", + "aliases": [], + "slug": "batch", + "title": "Batch", + "description": "Split the data into batches for executing a list of wrangles. Use this in situations such as where the intermediate data is too large to fit in memory.", + "status": "active", + "tags": [ + "utility", + "batch" + ], + "route": "/wrangles/batch", + "contract_json": "/registry/contracts/batch.json", + "raw_markdown": "/registry/wrangles/_root/batch.md", + "runtime_symbol": "wrangles.recipe_wrangles.main.batch", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "06669ef8-cdd1-42f7-8078-98e0b7a42c30", + "wrangle_name": "classify", + "namespace": null, + "wrangle_key": "classify", + "aliases": [], + "slug": "classify", + "title": "Classify", + "description": "Run classify wrangles on the specified columns. Requires WrangleWorks Account and Subscription.", + "status": "active", + "tags": [ + "ai", + "classify" + ], + "route": "/wrangles/classify", + "contract_json": "/registry/contracts/classify.json", + "raw_markdown": "/registry/wrangles/_root/classify.md", + "runtime_symbol": "wrangles.recipe_wrangles.main.classify", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "e36e15c4-f0ad-43f8-8555-ef683a8ab892", + "wrangle_name": "clean_whitespaces", + "namespace": null, + "wrangle_key": "clean_whitespaces", + "aliases": [], + "slug": "clean-whitespaces", + "title": "Clean Whitespaces", + "description": "Condense multiple spaces to a single space and convert special space characters to a standard space.", + "status": "active", + "tags": [ + "format", + "clean-whitespaces" + ], + "route": "/wrangles/clean-whitespaces", + "contract_json": "/registry/contracts/clean-whitespaces.json", + "raw_markdown": "/registry/wrangles/_root/clean-whitespaces.md", + "runtime_symbol": "wrangles.recipe_wrangles.main.clean_whitespaces", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "a393225e-7ccf-4708-83f8-d5abd6ba9b1e", + "wrangle_name": "lists", + "namespace": "compare", + "wrangle_key": "compare.lists", + "aliases": [], + "slug": "compare/lists", + "title": "Lists", + "description": "Compare multiple lists and return the intersection, difference, or union.", + "status": "active", + "tags": [ + "compare", + "lists" + ], + "route": "/wrangles/compare/lists", + "contract_json": "/registry/contracts/compare/lists.json", + "raw_markdown": "/registry/wrangles/compare/lists.md", + "runtime_symbol": "wrangles.recipe_wrangles.compare.lists", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "31905b74-ce58-45cd-8add-821cc04ab946", + "wrangle_name": "text", + "namespace": "compare", + "wrangle_key": "compare.text", + "aliases": [], + "slug": "compare/text", + "title": "Text", + "description": "Compare two strings and return the intersection or difference, use overlap to find the matching characters between the two strings, or use similarity to get a numeric similarity score.", + "status": "active", + "tags": [ + "compare", + "text" + ], + "route": "/wrangles/compare/text", + "contract_json": "/registry/contracts/compare/text.json", + "raw_markdown": "/registry/wrangles/compare/text.md", + "runtime_symbol": "wrangles.recipe_wrangles.compare.text", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "9a9662e4-53d1-4932-8adf-bc3e7aa364ad", + "wrangle_name": "case_when", + "namespace": "compute", + "wrangle_key": "compute.case_when", + "aliases": [], + "slug": "compute/case-when", + "title": "Case When", + "description": "Assign values to a column based on conditional logic.", + "status": "active", + "tags": [ + "compute", + "case-when" + ], + "route": "/wrangles/compute/case-when", + "contract_json": "/registry/contracts/compute/case-when.json", + "raw_markdown": "/registry/wrangles/compute/case-when.md", + "runtime_symbol": "wrangles.recipe_wrangles.compute.case_when", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "313a8ec0-cf13-4956-8d3b-5362b8641d0f", + "wrangle_name": "score_search_results", + "namespace": "compute", + "wrangle_key": "compute.score_search_results", + "aliases": [], + "slug": "compute/score-search-results", + "title": "Score Search Results", + "description": "Scores and filters search results based on progressive partial/exact matching. Can return dictionaries or a parallel list of formatted strings.", + "status": "active", + "tags": [ + "compute", + "score-search-results" + ], + "route": "/wrangles/compute/score-search-results", + "contract_json": "/registry/contracts/compute/score-search-results.json", + "raw_markdown": "/registry/wrangles/compute/score-search-results.md", + "runtime_symbol": "wrangles.recipe_wrangles.compute.score_search_results", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": null, + "wrangle_name": "concurrent", + "namespace": null, + "wrangle_key": "concurrent", + "aliases": [], + "slug": "concurrent", + "title": "Concurrent", + "description": "Run multiple wrangles concurrently rather than sequentially. Wrangles must specify output columns to be used concurrently. When using concurrent, Wrangles may not complete in a predictable order and it is not recommended to update overlapping columns with different wrangles.", + "status": "active", + "tags": [ + "utility", + "concurrent" + ], + "route": "/wrangles/concurrent", + "contract_json": "/registry/contracts/concurrent.json", + "raw_markdown": "/registry/wrangles/_root/concurrent.md", + "runtime_symbol": "wrangles.recipe_wrangles.main.concurrent", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "12ff4120-3613-4801-8653-99c793477fbc", + "wrangle_name": "case", + "namespace": "convert", + "wrangle_key": "convert.case", + "aliases": [], + "slug": "convert/case", + "title": "Convert Case", + "description": "Change the letter case of text values.", + "status": "active", + "tags": [ + "convert", + "text", + "case" + ], + "route": "/wrangles/convert/case", + "contract_json": "/registry/contracts/convert/case.json", + "raw_markdown": "/registry/wrangles/convert/case.md", + "runtime_symbol": "wrangles.recipe_wrangles.convert.case", + "runtime_contract_status": "verified", + "example_count": 1 + }, + { + "type": "wrangle", + "id": "52384f01-7164-404f-8615-063e7677a588", + "wrangle_name": "data_type", + "namespace": "convert", + "wrangle_key": "convert.data_type", + "aliases": [], + "slug": "convert/data-type", + "title": "Convert Data Type", + "description": "Convert values to strings, numbers, booleans, or datetimes.", + "status": "active", + "tags": [ + "convert", + "data-type", + "validation" + ], + "route": "/wrangles/convert/data-type", + "contract_json": "/registry/contracts/convert/data-type.json", + "raw_markdown": "/registry/wrangles/convert/data-type.md", + "runtime_symbol": "wrangles.recipe_wrangles.convert.data_type", + "runtime_contract_status": "verified", + "example_count": 1 + }, + { + "type": "wrangle", + "id": "7c55752e-70ab-4809-8298-c59436127457", + "wrangle_name": "fraction_to_decimal", + "namespace": "convert", + "wrangle_key": "convert.fraction_to_decimal", + "aliases": [], + "slug": "convert/fraction-to-decimal", + "title": "Fraction to Decimal", + "description": "Convert fractions to decimals.", + "status": "active", + "tags": [ + "convert", + "fraction-to-decimal" + ], + "route": "/wrangles/convert/fraction-to-decimal", + "contract_json": "/registry/contracts/convert/fraction-to-decimal.json", + "raw_markdown": "/registry/wrangles/convert/fraction-to-decimal.md", + "runtime_symbol": "wrangles.recipe_wrangles.convert.fraction_to_decimal", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "e370dfcf-b0fe-4c48-8a52-6f34c47e7978", + "wrangle_name": "from_json", + "namespace": "convert", + "wrangle_key": "convert.from_json", + "aliases": [], + "slug": "convert/from-json", + "title": "Convert From JSON", + "description": "Parse JSON text into lists, objects, scalars, booleans, or null values.", + "status": "active", + "tags": [ + "convert", + "json", + "structured-data" + ], + "route": "/wrangles/convert/from-json", + "contract_json": "/registry/contracts/convert/from-json.json", + "raw_markdown": "/registry/wrangles/convert/from-json.md", + "runtime_symbol": "wrangles.recipe_wrangles.convert.from_json", + "runtime_contract_status": "verified", + "example_count": 1 + }, + { + "type": "wrangle", + "id": "b1c20004-5f80-41c2-84d2-2d4601a033b5", + "wrangle_name": "from_yaml", + "namespace": "convert", + "wrangle_key": "convert.from_yaml", + "aliases": [], + "slug": "convert/from-yaml", + "title": "From YAML", + "description": "Convert a YAML representation into an object.", + "status": "active", + "tags": [ + "convert", + "from-yaml" + ], + "route": "/wrangles/convert/from-yaml", + "contract_json": "/registry/contracts/convert/from-yaml.json", + "raw_markdown": "/registry/wrangles/convert/from-yaml.md", + "runtime_symbol": "wrangles.recipe_wrangles.convert.from_yaml", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "94e54eb7-2b8c-4047-89d0-fb5d16baf396", + "wrangle_name": "to_json", + "namespace": "convert", + "wrangle_key": "convert.to_json", + "aliases": [], + "slug": "convert/to-json", + "title": "To JSON", + "description": "Convert an object to a JSON representation.", + "status": "active", + "tags": [ + "convert", + "to-json" + ], + "route": "/wrangles/convert/to-json", + "contract_json": "/registry/contracts/convert/to-json.json", + "raw_markdown": "/registry/wrangles/convert/to-json.md", + "runtime_symbol": "wrangles.recipe_wrangles.convert.to_json", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "4cd6252f-ce47-4a9d-8272-3d87e875b72a", + "wrangle_name": "to_yaml", + "namespace": "convert", + "wrangle_key": "convert.to_yaml", + "aliases": [], + "slug": "convert/to-yaml", + "title": "To YAML", + "description": "Convert an object to a YAML representation.", + "status": "active", + "tags": [ + "convert", + "to-yaml" + ], + "route": "/wrangles/convert/to-yaml", + "contract_json": "/registry/contracts/convert/to-yaml.json", + "raw_markdown": "/registry/wrangles/convert/to-yaml.md", + "runtime_symbol": "wrangles.recipe_wrangles.convert.to_yaml", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "b002fbdc-92c0-4347-889d-0f4bfeec99fa", + "wrangle_name": "copy", + "namespace": null, + "wrangle_key": "copy", + "aliases": [], + "slug": "copy", + "title": "Copy", + "description": "Make a copy of a column or a list of columns.", + "status": "active", + "tags": [ + "transform", + "copy" + ], + "route": "/wrangles/copy", + "contract_json": "/registry/contracts/copy.json", + "raw_markdown": "/registry/wrangles/_root/copy.md", + "runtime_symbol": "wrangles.recipe_wrangles.pandas.copy", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "232e3ba0-4735-4934-88aa-0163181abb3f", + "wrangle_name": "bins", + "namespace": "create", + "wrangle_key": "create.bins", + "aliases": [], + "slug": "create/bins", + "title": "Bins", + "description": "Create a column that groups data into bins.", + "status": "active", + "tags": [ + "create", + "bins" + ], + "route": "/wrangles/create/bins", + "contract_json": "/registry/contracts/create/bins.json", + "raw_markdown": "/registry/wrangles/create/bins.md", + "runtime_symbol": "wrangles.recipe_wrangles.create.bins", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "5a18e2c8-ec7c-45f5-88fd-bb5c358a8b40", + "wrangle_name": "column", + "namespace": "create", + "wrangle_key": "create.column", + "aliases": [], + "slug": "create/column", + "title": "Column", + "description": "Create column(s) with a user defined value. Defaults to None (empty).", + "status": "active", + "tags": [ + "create", + "column" + ], + "route": "/wrangles/create/column", + "contract_json": "/registry/contracts/create/column.json", + "raw_markdown": "/registry/wrangles/create/column.md", + "runtime_symbol": "wrangles.recipe_wrangles.create.column", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "e3518afd-a819-40ec-8b49-eb25690220c1", + "wrangle_name": "embeddings", + "namespace": "create", + "wrangle_key": "create.embeddings", + "aliases": [], + "slug": "create/embeddings", + "title": "Embeddings", + "description": "Create an embedding based on text input.", + "status": "active", + "tags": [ + "create", + "embeddings" + ], + "route": "/wrangles/create/embeddings", + "contract_json": "/registry/contracts/create/embeddings.json", + "raw_markdown": "/registry/wrangles/create/embeddings.md", + "runtime_symbol": "wrangles.recipe_wrangles.create.embeddings", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "cf3aaab2-3d5b-4c9b-826e-7af7510521c9", + "wrangle_name": "guid", + "namespace": "create", + "wrangle_key": "create.guid", + "aliases": [], + "slug": "create/guid", + "title": "GUID", + "description": "Create column(s) with a GUID.", + "status": "active", + "tags": [ + "create", + "guid" + ], + "route": "/wrangles/create/guid", + "contract_json": "/registry/contracts/create/guid.json", + "raw_markdown": "/registry/wrangles/create/guid.md", + "runtime_symbol": "wrangles.recipe_wrangles.create.guid", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "11e8fc13-00d2-4779-8d87-6288b07de7e7", + "wrangle_name": "hash", + "namespace": "create", + "wrangle_key": "create.hash", + "aliases": [], + "slug": "create/hash", + "title": "Hash", + "description": "Create a hash of a column.", + "status": "active", + "tags": [ + "create", + "hash" + ], + "route": "/wrangles/create/hash", + "contract_json": "/registry/contracts/create/hash.json", + "raw_markdown": "/registry/wrangles/create/hash.md", + "runtime_symbol": "wrangles.recipe_wrangles.create.hash", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "0a4909ca-6e14-4da7-8a70-a7fd106d6944", + "wrangle_name": "index", + "namespace": "create", + "wrangle_key": "create.index", + "aliases": [], + "slug": "create/index", + "title": "Index", + "description": "Create column(s) with an incremental index. e.g. 1,2,3...", + "status": "active", + "tags": [ + "create", + "index" + ], + "route": "/wrangles/create/index", + "contract_json": "/registry/contracts/create/index.json", + "raw_markdown": "/registry/wrangles/create/index.md", + "runtime_symbol": "wrangles.recipe_wrangles.create.index", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "10fc6709-16d4-4eab-8f56-6cb5d170ea66", + "wrangle_name": "jinja", + "namespace": "create", + "wrangle_key": "create.jinja", + "aliases": [], + "slug": "create/jinja", + "title": "Jinja", + "description": "Output text using a jinja template.", + "status": "active", + "tags": [ + "create", + "jinja" + ], + "route": "/wrangles/create/jinja", + "contract_json": "/registry/contracts/create/jinja.json", + "raw_markdown": "/registry/wrangles/create/jinja.md", + "runtime_symbol": "wrangles.recipe_wrangles.create.jinja", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "c376f3ff-2283-4c4c-8d7f-70db6f53ed19", + "wrangle_name": "uuid", + "namespace": "create", + "wrangle_key": "create.uuid", + "aliases": [], + "slug": "create/uuid", + "title": "UUID", + "description": "Create column(s) with a UUID.", + "status": "active", + "tags": [ + "create", + "uuid" + ], + "route": "/wrangles/create/uuid", + "contract_json": "/registry/contracts/create/uuid.json", + "raw_markdown": "/registry/wrangles/create/uuid.md", + "runtime_symbol": "wrangles.recipe_wrangles.create.uuid", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "19cfeb4f-02af-4ab2-895c-0ff2bb5cce19", + "wrangle_name": "date_calculator", + "namespace": null, + "wrangle_key": "date_calculator", + "aliases": [], + "slug": "date-calculator", + "title": "Date Calculator", + "description": "Add or Subtract time from a date.", + "status": "active", + "tags": [ + "date", + "date-calculator" + ], + "route": "/wrangles/date-calculator", + "contract_json": "/registry/contracts/date-calculator.json", + "raw_markdown": "/registry/wrangles/_root/date-calculator.md", + "runtime_symbol": "wrangles.recipe_wrangles.main.date_calculator", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "363bffbf-397e-4975-8382-e9efa5e9eed6", + "wrangle_name": "drop", + "namespace": null, + "wrangle_key": "drop", + "aliases": [], + "slug": "drop", + "title": "Drop", + "description": "Drop (Delete) selected column(s).", + "status": "active", + "tags": [ + "select", + "drop" + ], + "route": "/wrangles/drop", + "contract_json": "/registry/contracts/drop.json", + "raw_markdown": "/registry/wrangles/_root/drop.md", + "runtime_symbol": "wrangles.recipe_wrangles.pandas.drop", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "4e4b13ac-8d50-4b2c-85c8-2c31de1e817d", + "wrangle_name": "explode", + "namespace": null, + "wrangle_key": "explode", + "aliases": [], + "slug": "explode", + "title": "Explode", + "description": "Explode a column of lists into rows.", + "status": "active", + "tags": [ + "split", + "explode" + ], + "route": "/wrangles/explode", + "contract_json": "/registry/contracts/explode.json", + "raw_markdown": "/registry/wrangles/_root/explode.md", + "runtime_symbol": "wrangles.recipe_wrangles.pandas.explode", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "44153f95-4581-4cee-898e-b3b4714045fd", + "wrangle_name": "address", + "namespace": "extract", + "wrangle_key": "extract.address", + "aliases": [], + "slug": "extract/address", + "title": "Address", + "description": "Extract parts of addresses. Requires WrangleWorks Account.", + "status": "active", + "tags": [ + "extract", + "address" + ], + "route": "/wrangles/extract/address", + "contract_json": "/registry/contracts/extract/address.json", + "raw_markdown": "/registry/wrangles/extract/address.md", + "runtime_symbol": "wrangles.recipe_wrangles.extract.address", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "d9f89b00-fda3-4f4c-826c-6417b9390607", + "wrangle_name": "ai", + "namespace": "extract", + "wrangle_key": "extract.ai", + "aliases": [], + "slug": "extract/ai", + "title": "AI", + "description": "Extract structured data from each input row using an AI model. Define the desired fields with output, or reuse a saved definition with model_id.", + "status": "active", + "tags": [ + "ai", + "extract" + ], + "route": "/wrangles/extract/ai", + "contract_json": "/registry/contracts/extract/ai.json", + "raw_markdown": "/registry/wrangles/extract/ai.md", + "runtime_symbol": "wrangles.recipe_wrangles.extract.ai", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "03ccedef-c938-41f1-8980-280f1a91542e", + "wrangle_name": "attributes", + "namespace": "extract", + "wrangle_key": "extract.attributes", + "aliases": [], + "slug": "extract/attributes", + "title": "Attributes", + "description": "Extract numeric attributes from the input such as weights or lengths. Requires WrangleWorks Account.", + "status": "active", + "tags": [ + "extract", + "attributes" + ], + "route": "/wrangles/extract/attributes", + "contract_json": "/registry/contracts/extract/attributes.json", + "raw_markdown": "/registry/wrangles/extract/attributes.md", + "runtime_symbol": "wrangles.recipe_wrangles.extract.attributes", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "9b4c15fa-2aaa-40c8-8834-6e835760bee5", + "wrangle_name": "brackets", + "namespace": "extract", + "wrangle_key": "extract.brackets", + "aliases": [], + "slug": "extract/brackets", + "title": "Brackets", + "description": "Extract text properties in brackets from the input.", + "status": "active", + "tags": [ + "extract", + "brackets" + ], + "route": "/wrangles/extract/brackets", + "contract_json": "/registry/contracts/extract/brackets.json", + "raw_markdown": "/registry/wrangles/extract/brackets.md", + "runtime_symbol": "wrangles.recipe_wrangles.extract.brackets", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "da591387-0fca-4842-8bcb-d19f561f0292", + "wrangle_name": "codes", + "namespace": "extract", + "wrangle_key": "extract.codes", + "aliases": [], + "slug": "extract/codes", + "title": "Codes", + "description": "Extract alphanumeric codes from the input. Requires WrangleWorks Account.", + "status": "active", + "tags": [ + "extract", + "codes" + ], + "route": "/wrangles/extract/codes", + "contract_json": "/registry/contracts/extract/codes.json", + "raw_markdown": "/registry/wrangles/extract/codes.md", + "runtime_symbol": "wrangles.recipe_wrangles.extract.codes", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "e8e96b76-86bf-41dc-8d16-825dcff9688b", + "wrangle_name": "custom", + "namespace": "extract", + "wrangle_key": "extract.custom", + "aliases": [], + "slug": "extract/custom", + "title": "Custom", + "description": "Extract data from the input using a DIY or bespoke extraction wrangle. Requires WrangleWorks Account and Subscription.", + "status": "active", + "tags": [ + "extract", + "custom" + ], + "route": "/wrangles/extract/custom", + "contract_json": "/registry/contracts/extract/custom.json", + "raw_markdown": "/registry/wrangles/extract/custom.md", + "runtime_symbol": "wrangles.recipe_wrangles.extract.custom", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "a346de62-93cd-44ba-8d30-a6305629c6d7", + "wrangle_name": "date_properties", + "namespace": "extract", + "wrangle_key": "extract.date_properties", + "aliases": [], + "slug": "extract/date-properties", + "title": "Date Properties", + "description": "Extract date properties from a date (day, month, year, etc...).", + "status": "active", + "tags": [ + "extract", + "date-properties" + ], + "route": "/wrangles/extract/date-properties", + "contract_json": "/registry/contracts/extract/date-properties.json", + "raw_markdown": "/registry/wrangles/extract/date-properties.md", + "runtime_symbol": "wrangles.recipe_wrangles.extract.date_properties", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "9cebfa6f-a524-4aec-84a7-02d77b792843", + "wrangle_name": "date_range", + "namespace": "extract", + "wrangle_key": "extract.date_range", + "aliases": [], + "slug": "extract/date-range", + "title": "Date Range", + "description": "Extract date range frequency from two dates.", + "status": "active", + "tags": [ + "extract", + "date-range" + ], + "route": "/wrangles/extract/date-range", + "contract_json": "/registry/contracts/extract/date-range.json", + "raw_markdown": "/registry/wrangles/extract/date-range.md", + "runtime_symbol": "wrangles.recipe_wrangles.extract.date_range", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "728fc87a-a20d-4efa-833a-612e0b5eadc3", + "wrangle_name": "html", + "namespace": "extract", + "wrangle_key": "extract.html", + "aliases": [], + "slug": "extract/html", + "title": "HTML", + "description": "Extract elements from strings containing html. Requires WrangleWorks Account.", + "status": "active", + "tags": [ + "extract", + "html" + ], + "route": "/wrangles/extract/html", + "contract_json": "/registry/contracts/extract/html.json", + "raw_markdown": "/registry/wrangles/extract/html.md", + "runtime_symbol": "wrangles.recipe_wrangles.extract.html", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "23bbdb86-fd13-4b78-8fff-a7a76769ab63", + "wrangle_name": "properties", + "namespace": "extract", + "wrangle_key": "extract.properties", + "aliases": [], + "slug": "extract/properties", + "title": "Properties", + "description": "Extract text properties from the input. Requires WrangleWorks Account.", + "status": "active", + "tags": [ + "extract", + "properties" + ], + "route": "/wrangles/extract/properties", + "contract_json": "/registry/contracts/extract/properties.json", + "raw_markdown": "/registry/wrangles/extract/properties.md", + "runtime_symbol": "wrangles.recipe_wrangles.extract.properties", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "9aa0253a-4b70-4737-832c-964e15967289", + "wrangle_name": "regex", + "namespace": "extract", + "wrangle_key": "extract.regex", + "aliases": [], + "slug": "extract/regex", + "title": "Regex", + "description": "Extract matches or specific capture groups using regex.", + "status": "active", + "tags": [ + "extract", + "regex" + ], + "route": "/wrangles/extract/regex", + "contract_json": "/registry/contracts/extract/regex.json", + "raw_markdown": "/registry/wrangles/extract/regex.md", + "runtime_symbol": "wrangles.recipe_wrangles.extract.regex", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "e3242acf-d204-433f-8373-205b77481131", + "wrangle_name": "filter", + "namespace": null, + "wrangle_key": "filter", + "aliases": [], + "slug": "filter", + "title": "Filter", + "description": "Filter the dataframe based on the contents. If multiple filters are specified, all must be correct. For complex filters, use the where parameter.", + "status": "active", + "tags": [ + "select", + "filter" + ], + "route": "/wrangles/filter", + "contract_json": "/registry/contracts/filter.json", + "raw_markdown": "/registry/wrangles/_root/filter.md", + "runtime_symbol": "wrangles.recipe_wrangles.main.filter", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "a3c15135-4f7a-4659-83fd-f657afa603c9", + "wrangle_name": "dates", + "namespace": "format", + "wrangle_key": "format.dates", + "aliases": [], + "slug": "format/dates", + "title": "Dates", + "description": "Format a date.", + "status": "active", + "tags": [ + "format", + "dates" + ], + "route": "/wrangles/format/dates", + "contract_json": "/registry/contracts/format/dates.json", + "raw_markdown": "/registry/wrangles/format/dates.md", + "runtime_symbol": "wrangles.recipe_wrangles.format.dates", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "76c19378-38f4-45aa-85d1-3cdf8f8aae29", + "wrangle_name": "pad", + "namespace": "format", + "wrangle_key": "format.pad", + "aliases": [], + "slug": "format/pad", + "title": "Pad", + "description": "Pad a string to a fixed length.", + "status": "active", + "tags": [ + "format", + "pad" + ], + "route": "/wrangles/format/pad", + "contract_json": "/registry/contracts/format/pad.json", + "raw_markdown": "/registry/wrangles/format/pad.md", + "runtime_symbol": "wrangles.recipe_wrangles.format.pad", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "c12f99b9-2363-4da7-8405-7c73b87906e5", + "wrangle_name": "prefix", + "namespace": "format", + "wrangle_key": "format.prefix", + "aliases": [], + "slug": "format/prefix", + "title": "Prefix", + "description": "Add a prefix to a column.", + "status": "active", + "tags": [ + "format", + "prefix" + ], + "route": "/wrangles/format/prefix", + "contract_json": "/registry/contracts/format/prefix.json", + "raw_markdown": "/registry/wrangles/format/prefix.md", + "runtime_symbol": "wrangles.recipe_wrangles.format.prefix", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": null, + "wrangle_name": "price_breaks", + "namespace": "format", + "wrangle_key": "format.price_breaks", + "aliases": [], + "slug": "format/price-breaks", + "title": "Format Price Breaks", + "description": "Expand non-empty price-break cells into paired category and value columns.", + "status": "active", + "tags": [ + "format", + "price-breaks" + ], + "route": "/wrangles/format/price-breaks", + "contract_json": "/registry/contracts/format/price-breaks.json", + "raw_markdown": "/registry/wrangles/format/price-breaks.md", + "runtime_symbol": "wrangles.recipe_wrangles.format.price_breaks", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "283b9e78-b2b2-43d0-844f-9842c33120aa", + "wrangle_name": "remove_duplicates", + "namespace": "format", + "wrangle_key": "format.remove_duplicates", + "aliases": [], + "slug": "format/remove-duplicates", + "title": "Remove Duplicates", + "description": "Remove duplicates from a list. Preserves input order.", + "status": "active", + "tags": [ + "format", + "remove-duplicates" + ], + "route": "/wrangles/format/remove-duplicates", + "contract_json": "/registry/contracts/format/remove-duplicates.json", + "raw_markdown": "/registry/wrangles/format/remove-duplicates.md", + "runtime_symbol": "wrangles.recipe_wrangles.format.remove_duplicates", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "a359f72a-5250-4dd8-84f6-8a8173bee0f6", + "wrangle_name": "significant_figures", + "namespace": "format", + "wrangle_key": "format.significant_figures", + "aliases": [], + "slug": "format/significant-figures", + "title": "Significant Figures", + "description": "Format a value to a specific number of significant figures.", + "status": "active", + "tags": [ + "format", + "significant-figures" + ], + "route": "/wrangles/format/significant-figures", + "contract_json": "/registry/contracts/format/significant-figures.json", + "raw_markdown": "/registry/wrangles/format/significant-figures.md", + "runtime_symbol": "wrangles.recipe_wrangles.format.significant_figures", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "8d127060-ba2d-4934-897f-07662e01e40b", + "wrangle_name": "suffix", + "namespace": "format", + "wrangle_key": "format.suffix", + "aliases": [], + "slug": "format/suffix", + "title": "Suffix", + "description": "Add a suffix to a column.", + "status": "active", + "tags": [ + "format", + "suffix" + ], + "route": "/wrangles/format/suffix", + "contract_json": "/registry/contracts/format/suffix.json", + "raw_markdown": "/registry/wrangles/format/suffix.md", + "runtime_symbol": "wrangles.recipe_wrangles.format.suffix", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "af16b3c1-c230-4868-8ebe-f574904a0c76", + "wrangle_name": "trim", + "namespace": "format", + "wrangle_key": "format.trim", + "aliases": [], + "slug": "format/trim", + "title": "Trim", + "description": "Remove excess whitespace at the start and end of text.", + "status": "active", + "tags": [ + "format", + "trim" + ], + "route": "/wrangles/format/trim", + "contract_json": "/registry/contracts/format/trim.json", + "raw_markdown": "/registry/wrangles/format/trim.md", + "runtime_symbol": "wrangles.recipe_wrangles.format.trim", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "12c31c6c-cade-484d-84ba-7f302bf6af52", + "wrangle_name": "ai", + "namespace": "generate", + "wrangle_key": "generate.ai", + "aliases": [], + "slug": "generate/ai", + "title": "Ai", + "description": "Generate structured AI output for each recipe row.", + "status": "active", + "tags": [ + "ai", + "generate" + ], + "route": "/wrangles/generate/ai", + "contract_json": "/registry/contracts/generate/ai.json", + "raw_markdown": "/registry/wrangles/generate/ai.md", + "runtime_symbol": "wrangles.recipe_wrangles.generate.ai", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "ae12cf20-4934-428f-84a9-a6898cb7ffe0", + "wrangle_name": "huggingface", + "namespace": null, + "wrangle_key": "huggingface", + "aliases": [], + "slug": "huggingface", + "title": "Huggingface", + "description": "Use a model from huggingface.", + "status": "active", + "tags": [ + "ai", + "huggingface" + ], + "route": "/wrangles/huggingface", + "contract_json": "/registry/contracts/huggingface.json", + "raw_markdown": "/registry/wrangles/_root/huggingface.md", + "runtime_symbol": "wrangles.recipe_wrangles.main.huggingface", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "6177808e-aa2d-4d0b-8385-858b16948a5d", + "wrangle_name": "log", + "namespace": null, + "wrangle_key": "log", + "aliases": [], + "slug": "log", + "title": "Log", + "description": "Log the current status of the dataframe.", + "status": "active", + "tags": [ + "utility", + "log" + ], + "route": "/wrangles/log", + "contract_json": "/registry/contracts/log.json", + "raw_markdown": "/registry/wrangles/_root/log.md", + "runtime_symbol": "wrangles.recipe_wrangles.main.log", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "b3339193-d1cc-4c89-8ed6-901efa6d81be", + "wrangle_name": "lookup", + "namespace": null, + "wrangle_key": "lookup", + "aliases": [], + "slug": "lookup", + "title": "Lookup", + "description": "Lookup values from a saved lookup wrangle.", + "status": "active", + "tags": [ + "lookup" + ], + "route": "/wrangles/lookup", + "contract_json": "/registry/contracts/lookup.json", + "raw_markdown": "/registry/wrangles/_root/lookup.md", + "runtime_symbol": "wrangles.recipe_wrangles.main.lookup", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "494b11ad-00c1-4748-8b93-6bec982f4fec", + "wrangle_name": "math", + "namespace": null, + "wrangle_key": "math", + "aliases": [], + "slug": "math", + "title": "Math", + "description": "Apply a mathematical calculation.", + "status": "active", + "tags": [ + "compute", + "math" + ], + "route": "/wrangles/math", + "contract_json": "/registry/contracts/math.json", + "raw_markdown": "/registry/wrangles/_root/math.md", + "runtime_symbol": "wrangles.recipe_wrangles.main.math", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": null, + "wrangle_name": "maths", + "namespace": null, + "wrangle_key": "maths", + "aliases": [], + "slug": "maths", + "title": "Maths", + "description": "Deprecated alias for `math`; evaluate an expression and write its result to an output column.", + "status": "deprecated", + "tags": [ + "maths" + ], + "route": "/wrangles/maths", + "contract_json": "/registry/contracts/maths.json", + "raw_markdown": "/registry/wrangles/_root/maths.md", + "runtime_symbol": "wrangles.recipe_wrangles.main.maths", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": null, + "wrangle_name": "matrix", + "namespace": null, + "wrangle_key": "matrix", + "aliases": [], + "slug": "matrix", + "title": "Matrix", + "description": "Apply a matrix of wrangles to the dataframe. This will run the wrangles for each combination of the variables.", + "status": "active", + "tags": [ + "utility", + "matrix" + ], + "route": "/wrangles/matrix", + "contract_json": "/registry/contracts/matrix.json", + "raw_markdown": "/registry/wrangles/_root/matrix.md", + "runtime_symbol": "wrangles.recipe_wrangles.main.matrix", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "25c1a60d-fa48-4b9a-8c03-0921d5b31049", + "wrangle_name": "coalesce", + "namespace": "merge", + "wrangle_key": "merge.coalesce", + "aliases": [], + "slug": "merge/coalesce", + "title": "Coalesce", + "description": "Take the first non-empty value from a series of columns or lists.", + "status": "active", + "tags": [ + "merge", + "coalesce" + ], + "route": "/wrangles/merge/coalesce", + "contract_json": "/registry/contracts/merge/coalesce.json", + "raw_markdown": "/registry/wrangles/merge/coalesce.md", + "runtime_symbol": "wrangles.recipe_wrangles.merge.coalesce", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "6ff76728-e1f6-4d3d-8946-6aa3b7524b3f", + "wrangle_name": "concatenate", + "namespace": "merge", + "wrangle_key": "merge.concatenate", + "aliases": [], + "slug": "merge/concatenate", + "title": "Concatenate", + "description": "Concatenate a list of columns or a list within a single column.", + "status": "active", + "tags": [ + "merge", + "concatenate" + ], + "route": "/wrangles/merge/concatenate", + "contract_json": "/registry/contracts/merge/concatenate.json", + "raw_markdown": "/registry/wrangles/merge/concatenate.md", + "runtime_symbol": "wrangles.recipe_wrangles.merge.concatenate", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "93e27737-e966-4ba9-8777-4e96724ebfc4", + "wrangle_name": "dictionaries", + "namespace": "merge", + "wrangle_key": "merge.dictionaries", + "aliases": [], + "slug": "merge/dictionaries", + "title": "Dictionaries", + "description": "Take dictionaries in multiple columns and merge them to a single dictionary.", + "status": "active", + "tags": [ + "merge", + "dictionaries" + ], + "route": "/wrangles/merge/dictionaries", + "contract_json": "/registry/contracts/merge/dictionaries.json", + "raw_markdown": "/registry/wrangles/merge/dictionaries.md", + "runtime_symbol": "wrangles.recipe_wrangles.merge.dictionaries", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "8a2cd37c-8ef7-4b05-8264-36512f5dd837", + "wrangle_name": "key_value_pairs", + "namespace": "merge", + "wrangle_key": "merge.key_value_pairs", + "aliases": [], + "slug": "merge/key-value-pairs", + "title": "Key Value Pairs", + "description": "Create a dictionary from keys and values in paired columns e.g. COLUMN_NAME_1, COLUMN_VALUE_1, COLUMN_NAME_2, COLUMN_VALUE_2 ...", + "status": "active", + "tags": [ + "merge", + "key-value-pairs" + ], + "route": "/wrangles/merge/key-value-pairs", + "contract_json": "/registry/contracts/merge/key-value-pairs.json", + "raw_markdown": "/registry/wrangles/merge/key-value-pairs.md", + "runtime_symbol": "wrangles.recipe_wrangles.merge.key_value_pairs", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "d9978f00-b3d4-4583-884e-a53b98a43e9a", + "wrangle_name": "lists", + "namespace": "merge", + "wrangle_key": "merge.lists", + "aliases": [], + "slug": "merge/lists", + "title": "Lists", + "description": "Take lists in multiple columns and merge them to a single list.", + "status": "active", + "tags": [ + "merge", + "lists" + ], + "route": "/wrangles/merge/lists", + "contract_json": "/registry/contracts/merge/lists.json", + "raw_markdown": "/registry/wrangles/merge/lists.md", + "runtime_symbol": "wrangles.recipe_wrangles.merge.lists", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "9b869210-0d89-403b-8409-7cecdb5f9c7c", + "wrangle_name": "to_dict", + "namespace": "merge", + "wrangle_key": "merge.to_dict", + "aliases": [], + "slug": "merge/to-dict", + "title": "To Dict", + "description": "Take multiple columns and merge them to a dictionary (aka object) using the column headers as keys.", + "status": "active", + "tags": [ + "merge", + "to-dict" + ], + "route": "/wrangles/merge/to-dict", + "contract_json": "/registry/contracts/merge/to-dict.json", + "raw_markdown": "/registry/wrangles/merge/to-dict.md", + "runtime_symbol": "wrangles.recipe_wrangles.merge.to_dict", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "d5300fe7-c8a4-4a41-8f12-f2c1698678cc", + "wrangle_name": "to_list", + "namespace": "merge", + "wrangle_key": "merge.to_list", + "aliases": [], + "slug": "merge/to-list", + "title": "To List", + "description": "Take multiple columns and merge them to a list.", + "status": "active", + "tags": [ + "merge", + "to-list" + ], + "route": "/wrangles/merge/to-list", + "contract_json": "/registry/contracts/merge/to-list.json", + "raw_markdown": "/registry/wrangles/merge/to-list.md", + "runtime_symbol": "wrangles.recipe_wrangles.merge.to_list", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "c0398a11-7731-4e47-8df0-b07eea0b1d6c", + "wrangle_name": "python", + "namespace": null, + "wrangle_key": "python", + "aliases": [], + "slug": "python", + "title": "Python", + "description": "Apply a simple single-line python command. For more complex python use a custom function. Note, this evaluates the python command - be especially cautious including variables from untrusted sources within the command string. The python command will be evaluated once for each row and the result returned. Reference column values by using their name. Non-alphanumeric characters within column names are replaced by underscores (_) Additionally, all columns are available as a dict named kwargs. Additional parameters set for the wrangle will also be available to the command.", + "status": "active", + "tags": [ + "compute", + "python" + ], + "route": "/wrangles/python", + "contract_json": "/registry/contracts/python.json", + "raw_markdown": "/registry/wrangles/_root/python.md", + "runtime_symbol": "wrangles.recipe_wrangles.main.python", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": null, + "wrangle_name": "recipe", + "namespace": null, + "wrangle_key": "recipe", + "aliases": [], + "slug": "recipe", + "title": "Recipe", + "description": "Run another recipe as a wrangle against the current dataframe.", + "status": "active", + "tags": [ + "recipe" + ], + "route": "/wrangles/recipe", + "contract_json": "/registry/contracts/recipe.json", + "raw_markdown": "/registry/wrangles/_root/recipe.md", + "runtime_symbol": "wrangles.recipe_wrangles.main.recipe", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "def87df8-72da-4e34-83c1-1fde25126257", + "wrangle_name": "reindex", + "namespace": null, + "wrangle_key": "reindex", + "aliases": [], + "slug": "reindex", + "title": "Reindex", + "description": "Changes the row labels and column labels of a DataFrame.", + "status": "active", + "tags": [ + "transform", + "reindex" + ], + "route": "/wrangles/reindex", + "contract_json": "/registry/contracts/reindex.json", + "raw_markdown": "/registry/wrangles/_root/reindex.md", + "runtime_symbol": "wrangles.recipe_wrangles.pandas.reindex", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "543b96c3-f354-48be-8046-bf0cb9fbaf56", + "wrangle_name": "remove_words", + "namespace": null, + "wrangle_key": "remove_words", + "aliases": [], + "slug": "remove-words", + "title": "Remove Words", + "description": "Remove all the elements that occur in one list from another.", + "status": "active", + "tags": [ + "format", + "remove-words" + ], + "route": "/wrangles/remove-words", + "contract_json": "/registry/contracts/remove-words.json", + "raw_markdown": "/registry/wrangles/_root/remove-words.md", + "runtime_symbol": "wrangles.recipe_wrangles.main.remove_words", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "ab06898f-faf7-42e7-8275-5e3034a4d727", + "wrangle_name": "rename", + "namespace": null, + "wrangle_key": "rename", + "aliases": [], + "slug": "rename", + "title": "Rename", + "description": "Rename a column or list of columns.", + "status": "active", + "tags": [ + "transform", + "rename" + ], + "route": "/wrangles/rename", + "contract_json": "/registry/contracts/rename.json", + "raw_markdown": "/registry/wrangles/_root/rename.md", + "runtime_symbol": "wrangles.recipe_wrangles.main.rename", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "f0ab715e-9e0e-4614-83e4-5cd8ea08a09f", + "wrangle_name": "replace", + "namespace": null, + "wrangle_key": "replace", + "aliases": [], + "slug": "replace", + "title": "Replace", + "description": "Quick find and replace for simple values. Can use regex if 'input' in params and isinstance(params['input'], list):in the find field.", + "status": "active", + "tags": [ + "format", + "replace" + ], + "route": "/wrangles/replace", + "contract_json": "/registry/contracts/replace.json", + "raw_markdown": "/registry/wrangles/_root/replace.md", + "runtime_symbol": "wrangles.recipe_wrangles.main.replace", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "12f3111b-8511-4e42-8d3f-b5302dc3b4e4", + "wrangle_name": "round", + "namespace": null, + "wrangle_key": "round", + "aliases": [], + "slug": "round", + "title": "Round", + "description": "Round column(s) to the specified decimals.", + "status": "active", + "tags": [ + "format", + "round" + ], + "route": "/wrangles/round", + "contract_json": "/registry/contracts/round.json", + "raw_markdown": "/registry/wrangles/_root/round.md", + "runtime_symbol": "wrangles.recipe_wrangles.pandas.round", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "ec1f661b-2cbc-4a47-88e3-646179104376", + "wrangle_name": "find_links", + "namespace": "search", + "wrangle_key": "search.find_links", + "aliases": [], + "slug": "search/find-links", + "title": "Find Links", + "description": "Perform web searches to find links. Returns structured search results with titles, links, snippets, and optional pricing.", + "status": "active", + "tags": [ + "search", + "find-links" + ], + "route": "/wrangles/search/find-links", + "contract_json": "/registry/contracts/search/find-links.json", + "raw_markdown": "/registry/wrangles/search/find-links.md", + "runtime_symbol": "wrangles.recipe_wrangles.search.find_links", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "3d5faa87-9e96-48c0-8226-5ae566e8d76c", + "wrangle_name": "retrieve_link_content", + "namespace": "search", + "wrangle_key": "search.retrieve_link_content", + "aliases": [], + "slug": "search/retrieve-link-content", + "title": "Retrieve Link Content", + "description": "Retrieves targeted content from web pages using LLM URL extraction. Can optionally output a second column containing a clean, human-readable text summary of the retrieved data.", + "status": "active", + "tags": [ + "search", + "retrieve-link-content" + ], + "route": "/wrangles/search/retrieve-link-content", + "contract_json": "/registry/contracts/search/retrieve-link-content.json", + "raw_markdown": "/registry/wrangles/search/retrieve-link-content.md", + "runtime_symbol": "wrangles.recipe_wrangles.search.retrieve_link_content", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "bca12c60-3957-4dc5-83f7-5ee460df2a11", + "wrangle_name": "columns", + "namespace": "select", + "wrangle_key": "select.columns", + "aliases": [], + "slug": "select/columns", + "title": "Columns", + "description": "Select columns from the dataframe.", + "status": "active", + "tags": [ + "select", + "columns" + ], + "route": "/wrangles/select/columns", + "contract_json": "/registry/contracts/select/columns.json", + "raw_markdown": "/registry/wrangles/select/columns.md", + "runtime_symbol": "wrangles.recipe_wrangles.select.columns", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "5adaeada-6da8-464f-84cb-9fb5ecc17e48", + "wrangle_name": "dictionary_element", + "namespace": "select", + "wrangle_key": "select.dictionary_element", + "aliases": [], + "slug": "select/dictionary-element", + "title": "Dictionary Element", + "description": "Select one or more element of a dictionary.", + "status": "active", + "tags": [ + "select", + "dictionary-element" + ], + "route": "/wrangles/select/dictionary-element", + "contract_json": "/registry/contracts/select/dictionary-element.json", + "raw_markdown": "/registry/wrangles/select/dictionary-element.md", + "runtime_symbol": "wrangles.recipe_wrangles.select.dictionary_element", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "223d2f4e-3247-4189-8b6c-e73fe44c4266", + "wrangle_name": "element", + "namespace": "select", + "wrangle_key": "select.element", + "aliases": [], + "slug": "select/element", + "title": "Element", + "description": "Select elements of lists or dicts using python syntax like col[0]['key'].", + "status": "active", + "tags": [ + "select", + "element" + ], + "route": "/wrangles/select/element", + "contract_json": "/registry/contracts/select/element.json", + "raw_markdown": "/registry/wrangles/select/element.md", + "runtime_symbol": "wrangles.recipe_wrangles.select.element", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "c0af10b1-423a-416c-8cb5-7e7fe1164964", + "wrangle_name": "group_by", + "namespace": "select", + "wrangle_key": "select.group_by", + "aliases": [], + "slug": "select/group-by", + "title": "Group By", + "description": "Group and aggregate the data.", + "status": "active", + "tags": [ + "select", + "group-by" + ], + "route": "/wrangles/select/group-by", + "contract_json": "/registry/contracts/select/group-by.json", + "raw_markdown": "/registry/wrangles/select/group-by.md", + "runtime_symbol": "wrangles.recipe_wrangles.select.group_by", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "237af1ec-db7d-415a-88b7-70586a2191fb", + "wrangle_name": "head", + "namespace": "select", + "wrangle_key": "select.head", + "aliases": [], + "slug": "select/head", + "title": "Head", + "description": "Return the first n rows.", + "status": "active", + "tags": [ + "select", + "head" + ], + "route": "/wrangles/select/head", + "contract_json": "/registry/contracts/select/head.json", + "raw_markdown": "/registry/wrangles/select/head.md", + "runtime_symbol": "wrangles.recipe_wrangles.select.head", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "00aad85d-8cc8-42e5-86f3-e4ff916e8ac2", + "wrangle_name": "highest_confidence", + "namespace": "select", + "wrangle_key": "select.highest_confidence", + "aliases": [], + "slug": "select/highest-confidence", + "title": "Highest Confidence", + "description": "Select the option with the highest confidence from multiple columns. Inputs are expected to be of the form [<>, <>].", + "status": "active", + "tags": [ + "select", + "highest-confidence" + ], + "route": "/wrangles/select/highest-confidence", + "contract_json": "/registry/contracts/select/highest-confidence.json", + "raw_markdown": "/registry/wrangles/select/highest-confidence.md", + "runtime_symbol": "wrangles.recipe_wrangles.select.highest_confidence", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "5cdd9857-0c77-43bf-80d7-d0a8cb6f980b", + "wrangle_name": "left", + "namespace": "select", + "wrangle_key": "select.left", + "aliases": [], + "slug": "select/left", + "title": "Left", + "description": "Return characters from the left of text. Strings shorter than the length defined will be unaffected.", + "status": "active", + "tags": [ + "select", + "left" + ], + "route": "/wrangles/select/left", + "contract_json": "/registry/contracts/select/left.json", + "raw_markdown": "/registry/wrangles/select/left.md", + "runtime_symbol": "wrangles.recipe_wrangles.select.left", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "4d7a5f66-0a4a-40e0-8298-d5c55754423d", + "wrangle_name": "length", + "namespace": "select", + "wrangle_key": "select.length", + "aliases": [], + "slug": "select/length", + "title": "Length", + "description": "Calculate the lengths of data in a column. The length depends on the data type e.g. text will be the length of the text, lists will be the number of elements in the list.", + "status": "active", + "tags": [ + "select", + "length" + ], + "route": "/wrangles/select/length", + "contract_json": "/registry/contracts/select/length.json", + "raw_markdown": "/registry/wrangles/select/length.md", + "runtime_symbol": "wrangles.recipe_wrangles.select.length", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "ec40495d-d29a-4f62-86dd-eafa43cf388a", + "wrangle_name": "list_element", + "namespace": "select", + "wrangle_key": "select.list_element", + "aliases": [], + "slug": "select/list-element", + "title": "List Element", + "description": "Select a numbered element of a list (zero indexed).", + "status": "active", + "tags": [ + "select", + "list-element" + ], + "route": "/wrangles/select/list-element", + "contract_json": "/registry/contracts/select/list-element.json", + "raw_markdown": "/registry/wrangles/select/list-element.md", + "runtime_symbol": "wrangles.recipe_wrangles.select.list_element", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "89ee82ec-3bc5-4bfa-899b-7a1260ef9bdb", + "wrangle_name": "right", + "namespace": "select", + "wrangle_key": "select.right", + "aliases": [], + "slug": "select/right", + "title": "Right", + "description": "Return characters from the right of text. Strings shorter than the length defined will be unaffected.", + "status": "active", + "tags": [ + "select", + "right" + ], + "route": "/wrangles/select/right", + "contract_json": "/registry/contracts/select/right.json", + "raw_markdown": "/registry/wrangles/select/right.md", + "runtime_symbol": "wrangles.recipe_wrangles.select.right", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "95a84ab6-a66e-450f-8a4a-7a87e3a77932", + "wrangle_name": "sample", + "namespace": "select", + "wrangle_key": "select.sample", + "aliases": [], + "slug": "select/sample", + "title": "Sample", + "description": "Return a random sample of the rows.", + "status": "active", + "tags": [ + "select", + "sample" + ], + "route": "/wrangles/select/sample", + "contract_json": "/registry/contracts/select/sample.json", + "raw_markdown": "/registry/wrangles/select/sample.md", + "runtime_symbol": "wrangles.recipe_wrangles.select.sample", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "8befddf8-602e-4fa9-8f16-4c547210ebec", + "wrangle_name": "substring", + "namespace": "select", + "wrangle_key": "select.substring", + "aliases": [], + "slug": "select/substring", + "title": "Substring", + "description": "Return characters from the middle of text.", + "status": "active", + "tags": [ + "select", + "substring" + ], + "route": "/wrangles/select/substring", + "contract_json": "/registry/contracts/select/substring.json", + "raw_markdown": "/registry/wrangles/select/substring.md", + "runtime_symbol": "wrangles.recipe_wrangles.select.substring", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "60853759-c160-49a4-87eb-036516a9d823", + "wrangle_name": "tail", + "namespace": "select", + "wrangle_key": "select.tail", + "aliases": [], + "slug": "select/tail", + "title": "Tail", + "description": "Return the last n rows.", + "status": "active", + "tags": [ + "select", + "tail" + ], + "route": "/wrangles/select/tail", + "contract_json": "/registry/contracts/select/tail.json", + "raw_markdown": "/registry/wrangles/select/tail.md", + "runtime_symbol": "wrangles.recipe_wrangles.select.tail", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "af2a5dcc-0ec0-48d7-8fb4-f58d9c5391d2", + "wrangle_name": "threshold", + "namespace": "select", + "wrangle_key": "select.threshold", + "aliases": [], + "slug": "select/threshold", + "title": "Threshold", + "description": "Select the first option if it exceeds a given threshold, else the second option.", + "status": "active", + "tags": [ + "select", + "threshold" + ], + "route": "/wrangles/select/threshold", + "contract_json": "/registry/contracts/select/threshold.json", + "raw_markdown": "/registry/wrangles/select/threshold.md", + "runtime_symbol": "wrangles.recipe_wrangles.select.threshold", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "7c733344-4cce-4938-8013-53742fb46a90", + "wrangle_name": "similarity", + "namespace": null, + "wrangle_key": "similarity", + "aliases": [], + "slug": "similarity", + "title": "Similarity", + "description": "Calculate the cosine similarity of two vectors.", + "status": "active", + "tags": [ + "compare", + "similarity" + ], + "route": "/wrangles/similarity", + "contract_json": "/registry/contracts/similarity.json", + "raw_markdown": "/registry/wrangles/_root/similarity.md", + "runtime_symbol": "wrangles.recipe_wrangles.main.similarity", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "1dcf06ad-898a-4d83-862c-4774be37a687", + "wrangle_name": "sort", + "namespace": null, + "wrangle_key": "sort", + "aliases": [], + "slug": "sort", + "title": "Sort", + "description": "Sort the data.", + "status": "active", + "tags": [ + "select", + "sort" + ], + "route": "/wrangles/sort", + "contract_json": "/registry/contracts/sort.json", + "raw_markdown": "/registry/wrangles/_root/sort.md", + "runtime_symbol": "wrangles.recipe_wrangles.pandas.sort", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "06ca98e4-d026-43f7-84eb-af246d401ba9", + "wrangle_name": "dictionary", + "namespace": "split", + "wrangle_key": "split.dictionary", + "aliases": [], + "slug": "split/dictionary", + "title": "Dictionary", + "description": "Split one or more dictionaries into columns. The dictionary keys will be returned as the new column headers. If the dictionaries contain overlapping values, the last value will be returned.", + "status": "active", + "tags": [ + "split", + "dictionary" + ], + "route": "/wrangles/split/dictionary", + "contract_json": "/registry/contracts/split/dictionary.json", + "raw_markdown": "/registry/wrangles/split/dictionary.md", + "runtime_symbol": "wrangles.recipe_wrangles.split.dictionary", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "3260b9f7-aae2-499f-8004-d211c2cf643e", + "wrangle_name": "list", + "namespace": "split", + "wrangle_key": "split.list", + "aliases": [], + "slug": "split/list", + "title": "List", + "description": "Split a list in a single column to multiple columns.", + "status": "active", + "tags": [ + "split", + "list" + ], + "route": "/wrangles/split/list", + "contract_json": "/registry/contracts/split/list.json", + "raw_markdown": "/registry/wrangles/split/list.md", + "runtime_symbol": "wrangles.recipe_wrangles.split.list", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "e76e43f7-d129-4bf8-87b4-a304a378b130", + "wrangle_name": "text", + "namespace": "split", + "wrangle_key": "split.text", + "aliases": [], + "slug": "split/text", + "title": "Text", + "description": "Split a string to multiple columns or a list.", + "status": "active", + "tags": [ + "split", + "text" + ], + "route": "/wrangles/split/text", + "contract_json": "/registry/contracts/split/text.json", + "raw_markdown": "/registry/wrangles/split/text.md", + "runtime_symbol": "wrangles.recipe_wrangles.split.text", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "6cc88418-ae0c-43f6-84ee-31e0d5f838c3", + "wrangle_name": "tokenize", + "namespace": "split", + "wrangle_key": "split.tokenize", + "aliases": [], + "slug": "split/tokenize", + "title": "Tokenize", + "description": "Split text into tokens. A variety of methods are available. The default method is to split on spaces.", + "status": "active", + "tags": [ + "split", + "tokenize" + ], + "route": "/wrangles/split/tokenize", + "contract_json": "/registry/contracts/split/tokenize.json", + "raw_markdown": "/registry/wrangles/split/tokenize.md", + "runtime_symbol": "wrangles.recipe_wrangles.split.tokenize", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "467a06b1-a697-4d31-8061-7d83a719fd79", + "wrangle_name": "sql", + "namespace": null, + "wrangle_key": "sql", + "aliases": [], + "slug": "sql", + "title": "SQL", + "description": "Apply a SQL command to the current dataframe. Only SELECT statements are supported - the result will be the output.", + "status": "active", + "tags": [ + "compute", + "sql" + ], + "route": "/wrangles/sql", + "contract_json": "/registry/contracts/sql.json", + "raw_markdown": "/registry/wrangles/_root/sql.md", + "runtime_symbol": "wrangles.recipe_wrangles.main.sql", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "53cd3fdd-24e2-4411-8655-6014b92a3f3a", + "wrangle_name": "standardize", + "namespace": null, + "wrangle_key": "standardize", + "aliases": [], + "slug": "standardize", + "title": "Standardize", + "description": "Standardize data using a DIY or bespoke standardization wrangle. Requires WrangleWorks Account and Subscription.", + "status": "active", + "tags": [ + "format", + "standardize" + ], + "route": "/wrangles/standardize", + "contract_json": "/registry/contracts/standardize.json", + "raw_markdown": "/registry/wrangles/_root/standardize.md", + "runtime_symbol": "wrangles.recipe_wrangles.main.standardize", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": null, + "wrangle_name": "clean", + "namespace": "standardize", + "wrangle_key": "standardize.clean", + "aliases": [], + "slug": "standardize/clean", + "title": "Standardize Clean", + "description": "Repair common encoding, Unicode, HTML character reference, control character, and whitespace problems locally.", + "status": "active", + "tags": [ + "standardize", + "clean" + ], + "route": "/wrangles/standardize/clean", + "contract_json": "/registry/contracts/standardize/clean.json", + "raw_markdown": "/registry/wrangles/standardize/clean.md", + "runtime_symbol": "wrangles.recipe_wrangles.standardize.clean", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": null, + "wrangle_name": "custom", + "namespace": "standardize", + "wrangle_key": "standardize.custom", + "aliases": [], + "slug": "standardize/custom", + "title": "Standardize Custom", + "description": "Standardize data using a DIY or bespoke standardization wrangle. Requires WrangleWorks Account and Subscription.", + "status": "active", + "tags": [ + "standardize", + "custom" + ], + "route": "/wrangles/standardize/custom", + "contract_json": "/registry/contracts/standardize/custom.json", + "raw_markdown": "/registry/wrangles/standardize/custom.md", + "runtime_symbol": "wrangles.recipe_wrangles.standardize.custom", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "73c3ceb6-ffd8-4d74-8389-c83b99d33bb0", + "wrangle_name": "translate", + "namespace": null, + "wrangle_key": "translate", + "aliases": [], + "slug": "translate", + "title": "Translate", + "description": "Translate the input to a different language. Requires WrangleWorks Account and DeepL API Key (A free account for up to 500,000 characters per month is available).", + "status": "active", + "tags": [ + "format", + "translate" + ], + "route": "/wrangles/translate", + "contract_json": "/registry/contracts/translate.json", + "raw_markdown": "/registry/wrangles/_root/translate.md", + "runtime_symbol": "wrangles.recipe_wrangles.main.translate", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": "8716347f-f286-49b2-8a0b-cb73292e7475", + "wrangle_name": "transpose", + "namespace": null, + "wrangle_key": "transpose", + "aliases": [], + "slug": "transpose", + "title": "Transpose", + "description": "Transpose the DataFrame (swap columns to rows).", + "status": "active", + "tags": [ + "transform", + "transpose" + ], + "route": "/wrangles/transpose", + "contract_json": "/registry/contracts/transpose.json", + "raw_markdown": "/registry/wrangles/_root/transpose.md", + "runtime_symbol": "wrangles.recipe_wrangles.pandas.transpose", + "runtime_contract_status": "verified", + "example_count": 0 + }, + { + "type": "wrangle", + "id": null, + "wrangle_name": "try", + "namespace": null, + "wrangle_key": "try", + "aliases": [], + "slug": "try", + "title": "Try", + "description": "Try a list of wrangles and catch any errors that occur.", + "status": "active", + "tags": [ + "utility", + "try" + ], + "route": "/wrangles/try", + "contract_json": "/registry/contracts/try.json", + "raw_markdown": "/registry/wrangles/_root/try.md", + "runtime_symbol": "wrangles.recipe_wrangles.main.Try", + "runtime_contract_status": "verified", + "example_count": 0 + } + ], + "artifacts": { + "index": "/registry/index.md", + "recipe_schema": "/schemas/recipes/pilot/schema.json", + "entry_schema": "/registry/schema/wrangle-entry.schema.json", + "runtime_manifest": "/registry/runtime/wranglespy.json", + "runtime_manifest_schema": "/registry/schema/wrangles-runtime-manifest.schema.json" + } +} diff --git a/wrangles-docs/static/registry/runtime/wranglespy.json b/wrangles-docs/static/registry/runtime/wranglespy.json new file mode 100644 index 0000000..1bcf4f0 --- /dev/null +++ b/wrangles-docs/static/registry/runtime/wranglespy.json @@ -0,0 +1,9266 @@ +{ + "$schema": "https://docs.wrangles.com/registry/schema/wrangles-runtime-manifest.schema.json", + "format": "wrangles-runtime-manifest", + "format_version": "0.1", + "source": { + "repository": "https://github.com/wrangleworks/WranglesPY", + "revision": "7916bf158e8b7e561270a1bea7b808f88956edc4" + }, + "entry_count": 98, + "wrangles": [ + { + "runtime_key": "accordion", + "python_symbol": "wrangles.recipe_wrangles.main.accordion", + "signature": "(df: pandas.core.frame.DataFrame, wrangles: list, input: Union[str, int, list], output: Union[str, list] = None, propagate: Union[str, list] = None, functions: Union[function, list] = [], variables: dict = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "wrangles", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "propagate", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + } + ], + "internal_parameters": [ + "df", + "functions", + "variables" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Apply a series of wrangles to column(s) containing lists. The wrangles will be applied to each element in the list and the results will be returned back as a list.", + "additionalProperties": false, + "required": [ + "input", + "wrangles" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "The column(s) containing the list(s) that the wrangles will be applied to the elements of." + }, + "propagate": { + "type": [ + "string", + "array" + ], + "description": "Limit the column(s) that will be available to the wrangles and replicated for each element. If not specified, all columns will be propogated. This may be useful to limit the memory use for large datasets." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Output of the wrangles to save back to the dataframe." + }, + "wrangles": { + "type": "array", + "description": "List of wrangles to apply", + "minItems": 1, + "items": { + "$ref": "#/$defs/wrangles/items" + } + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "batch", + "python_symbol": "wrangles.recipe_wrangles.main.batch", + "signature": "(df, wrangles: list, functions: Union[function, list] = [], variables: dict = None, batch_size: int = 1000, threads: int = 1, on_error: dict = None, timeout: float = None, use_multiprocessing: bool = False)", + "parameters": [ + { + "name": "wrangles", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "batch_size", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 1000 + }, + { + "name": "threads", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 1 + }, + { + "name": "on_error", + "kind": "positional_or_keyword", + "required": false, + "annotation": "dict", + "default": null + }, + { + "name": "timeout", + "kind": "positional_or_keyword", + "required": false, + "annotation": "float", + "default": null + }, + { + "name": "use_multiprocessing", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df", + "functions", + "variables" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Split the data into batches for executing a list of wrangles. Use this in situations such as where the intermediate data is too large to fit in memory.", + "additionalProperties": false, + "required": [ + "wrangles" + ], + "properties": { + "batch_size": { + "type": "integer", + "description": "The number of rows to split each batch into", + "default": 1000 + }, + "wrangles": { + "type": "array", + "description": "The wrangles to execute on the data. Each series of wrangles\nwill be run agaisnst the data in batches of the size\ndefined by batch_size.", + "minItems": 1, + "items": { + "$ref": "#/$defs/wrangles/items" + } + }, + "threads": { + "type": "integer", + "description": "The number of threads to use for parallel processing. Default 1." + }, + "on_error": { + "type": "object", + "description": "A dictionary of column_name: value to return if an error occurs while attempting to run a batch" + }, + "timeout": { + "type": "number", + "description": "The number of seconds to wait for a batch to complete before raising an error" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "classify", + "python_symbol": "wrangles.recipe_wrangles.main.classify", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list], model_id: str, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "model_id", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Run classify wrangles on the specified columns.\nRequires WrangleWorks Account and Subscription.\n", + "required": [ + "input", + "output", + "model_id" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column." + }, + "model_id": { + "type": "string", + "description": "ID of the classification model to be used" + }, + "include_confidence": { + "type": "boolean", + "description": "For models that support it, include the confidence level in the output" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "clean_whitespaces", + "python_symbol": "wrangles.recipe_wrangles.main.clean_whitespaces", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list] = None, trim: bool = True, remove_literals: bool = True) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "trim", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + }, + { + "name": "remove_literals", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Condense multiple spaces to a single space and convert special space characters to a standard space.", + "additionalProperties": false, + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input columns." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of output columns." + }, + "trim": { + "type": "boolean", + "description": "Whether to trim leading and trailing spaces. Default True." + }, + "remove_literals": { + "type": "boolean", + "description": "Whether to remove special space characters such as new lines etc. Default True." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "compare.lists", + "python_symbol": "wrangles.recipe_wrangles.compare.lists", + "signature": "(df: pandas.core.frame.DataFrame, input: list, output: str, method: str = 'intersection', remove_duplicates: bool = False, ignore_case: bool = False) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "method", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "intersection" + }, + { + "name": "remove_duplicates", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "ignore_case", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Compare multiple lists and return the intersection, difference, or union", + "required": [ + "input", + "output", + "method" + ], + "properties": { + "input": { + "type": "array", + "description": "List of input columns containing lists to compare" + }, + "output": { + "type": "string", + "description": "Name of the output column" + }, + "method": { + "type": "string", + "description": "Type of comparison to perform", + "enum": [ + "intersection", + "difference", + "union" + ] + }, + "remove_duplicates": { + "type": "boolean", + "description": "Remove duplicates from the result" + }, + "ignore_case": { + "type": "boolean", + "description": "Ignore case when comparing string items" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "compare.text", + "python_symbol": "wrangles.recipe_wrangles.compare.text", + "signature": "(df: pandas.core.frame.DataFrame, input: list, output: Union[str, list], method: str = 'difference', char: str = ' ', non_match_char: str = '*', include_ratio: bool = False, decimal_places: int = 3, exact_match: str = None, empty_a: str = None, empty_b: str = None, all_empty: str = None, case_sensitive: bool = False, metric: str = 'token_sort') -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "method", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "difference" + }, + { + "name": "char", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": " " + }, + { + "name": "non_match_char", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "*" + }, + { + "name": "include_ratio", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "decimal_places", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 3 + }, + { + "name": "exact_match", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "empty_a", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "empty_b", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "all_empty", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "case_sensitive", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "metric", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "token_sort" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Compare two strings and return the intersection or difference, use overlap to find the matching characters between the two strings, or use similarity to get a numeric similarity score.", + "required": [ + "input", + "output", + "method" + ], + "properties": { + "input": { + "type": "array", + "description": "the columns to compare. First column is the base column" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "The column to output the results to. Must be a list of two column names [mask_column, ratio_column] when method is overlap and include_ratio is true; otherwise a single column name." + }, + "method": { + "type": "string", + "description": "The type of comparison to perform (difference, intersection, overlap, similarity)", + "enum": [ + "difference", + "intersection", + "overlap", + "similarity" + ] + } + }, + "allOf": [ + { + "if": { + "properties": { + "method": { + "const": "difference" + } + } + }, + "then": { + "properties": { + "char": { + "type": "string", + "description": "(Optional) The character to split the strings on. Default is a space" + }, + "case_sensitive": { + "type": "boolean", + "description": "(Optional) Whether the comparison is case sensitive. Default is False" + } + } + } + }, + { + "if": { + "properties": { + "method": { + "const": "intersection" + } + } + }, + "then": { + "properties": { + "char": { + "type": "string", + "description": "(Optional) The character to split the strings on. Default is a space" + }, + "case_sensitive": { + "type": "boolean", + "description": "(Optional) Whether the comparison is case sensitive. Default is False" + } + } + } + }, + { + "if": { + "properties": { + "method": { + "const": "overlap" + } + } + }, + "then": { + "properties": { + "non_match_char": { + "type": "string", + "description": "(Optional) Character to use for non-matching characters" + }, + "include_ratio": { + "type": "boolean", + "description": "(Optional) Include the ratio of matching characters. This is the legacy difflib.SequenceMatcher score, not the similarity score from method: similarity. When true, output must be a list of two column names: [mask_column, ratio_column]" + }, + "decimal_places": { + "type": "integer", + "description": "(Optional) Number of decimal places to round the ratio to" + }, + "exact_match": { + "type": "string", + "description": "(Optional) Value to use for exact matches" + }, + "empty_a": { + "type": "string", + "description": "(Optional) Value to use for empty input a" + }, + "empty_b": { + "type": "string", + "description": "(Optional) Value to use for empty input b" + }, + "all_empty": { + "type": "string", + "description": "(Optional) Value to use for both inputs" + }, + "case_sensitive": { + "type": "boolean", + "description": "(Optional) Whether the comparison is case sensitive. Default is False" + } + } + } + }, + { + "if": { + "properties": { + "method": { + "const": "similarity" + } + } + }, + "then": { + "properties": { + "metric": { + "type": "string", + "description": "(Optional) The similarity metric to use. Default is token_sort", + "oneOf": [ + { + "const": "token_sort", + "description": "Ignores token order but keeps duplicate tokens, penalizing missing or extra content. Best general-purpose choice for comparing full descriptions where word order may differ." + }, + { + "const": "damerau_levenshtein", + "description": "Sequential character-edit similarity that recognizes adjacent transpositions (e.g. smtih vs smith) as a single edit. Best for short, order-sensitive strings like part numbers or codes." + }, + { + "const": "token_set", + "description": "Ignores token order and duplicate tokens. A shorter token set fully contained in a longer one can score 1.0. Best when one description is expected to be a subset of the other." + } + ] + }, + "decimal_places": { + "type": "integer", + "description": "(Optional) Number of decimal places to round the score to. Default is 3" + } + } + } + } + ] + }, + "plain_docstring": null + }, + { + "runtime_key": "compute.case_when", + "python_symbol": "wrangles.recipe_wrangles.compute.case_when", + "signature": "(df: pandas.core.frame.DataFrame, output: str, cases: list, default=None)", + "parameters": [ + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "cases", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "default", + "kind": "positional_or_keyword", + "required": false, + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Assign values to a column based on conditional logic", + "additionalProperties": false, + "required": [ + "output", + "cases" + ], + "properties": { + "output": { + "type": "string", + "description": "Name of the output column" + }, + "cases": { + "type": "array", + "description": "List of conditions and corresponding values", + "minItems": 1, + "items": { + "type": "object", + "required": [ + "condition", + "value" + ], + "properties": { + "condition": { + "type": "string", + "description": "Condition to evaluate (e.g., \"Score > 0.84\")" + }, + "value": { + "type": [ + "string", + "number", + "integer", + "boolean" + ], + "description": "Value to assign if condition is true" + } + } + } + }, + "default": { + "type": [ + "string", + "number", + "integer", + "boolean", + "null" + ], + "description": "Value to assign if no conditions are met. Default None." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "compute.score_search_results", + "python_symbol": "wrangles.recipe_wrangles.compute.score_search_results", + "signature": "(df: pandas.core.frame.DataFrame, input: list, output: str | list, must_match_part_code: bool = True, allow_mpn_exact: bool = True, allow_mpn_partial: bool = True, allow_other_exact: bool = True, allow_other_partial: bool = True, blacklist_keywords: str = '', mpn_exact_score: float = 8.0, mpn_partial_base: float = 4.0, part_code_exact_score: float = 6.0, part_code_partial_base: float = 2.0, supplier_exact_score: float = 3.0, supplier_partial_base: float = 1.0, context_match_base: float = 2.0, fuzzy_match_threshold: float = 0.8) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str | list" + }, + { + "name": "must_match_part_code", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + }, + { + "name": "allow_mpn_exact", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + }, + { + "name": "allow_mpn_partial", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + }, + { + "name": "allow_other_exact", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + }, + { + "name": "allow_other_partial", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + }, + { + "name": "blacklist_keywords", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "" + }, + { + "name": "mpn_exact_score", + "kind": "positional_or_keyword", + "required": false, + "annotation": "float", + "default": 8 + }, + { + "name": "mpn_partial_base", + "kind": "positional_or_keyword", + "required": false, + "annotation": "float", + "default": 4 + }, + { + "name": "part_code_exact_score", + "kind": "positional_or_keyword", + "required": false, + "annotation": "float", + "default": 6 + }, + { + "name": "part_code_partial_base", + "kind": "positional_or_keyword", + "required": false, + "annotation": "float", + "default": 2 + }, + { + "name": "supplier_exact_score", + "kind": "positional_or_keyword", + "required": false, + "annotation": "float", + "default": 3 + }, + { + "name": "supplier_partial_base", + "kind": "positional_or_keyword", + "required": false, + "annotation": "float", + "default": 1 + }, + { + "name": "context_match_base", + "kind": "positional_or_keyword", + "required": false, + "annotation": "float", + "default": 2 + }, + { + "name": "fuzzy_match_threshold", + "kind": "positional_or_keyword", + "required": false, + "annotation": "float", + "default": 0.8 + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Scores and filters search results based on progressive partial/exact matching. Can return dictionaries or a parallel list of formatted strings.", + "additionalProperties": false, + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": "array", + "description": "List of 3 to 5 columns -> [results, suppliers, part_codes, mpns (optional), descriptions (optional)]" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Output column for the dictionaries. If a list of 2 is provided, outputs [dicts_column, pretty_strings_column]." + }, + "must_match_part_code": { + "type": "boolean", + "description": "If true, filters out results that don't satisfy the allowed match types." + }, + "allow_mpn_exact": { + "type": "boolean", + "description": "Treat exact MPN matches as valid part code matches." + }, + "allow_mpn_partial": { + "type": "boolean", + "description": "Treat partial MPN matches as valid part code matches." + }, + "allow_other_exact": { + "type": "boolean", + "description": "Treat exact other part code matches as valid part code matches." + }, + "allow_other_partial": { + "type": "boolean", + "description": "Treat partial other part code matches as valid part code matches." + }, + "blacklist_keywords": { + "type": [ + "string", + "array" + ], + "description": "Comma-separated list or array of keywords to filter out URLs containing them." + }, + "mpn_exact_score": { + "type": "number" + }, + "mpn_partial_base": { + "type": "number" + }, + "part_code_exact_score": { + "type": "number" + }, + "part_code_partial_base": { + "type": "number" + }, + "supplier_exact_score": { + "type": "number" + }, + "supplier_partial_base": { + "type": "number" + }, + "context_match_base": { + "type": "number" + }, + "fuzzy_match_threshold": { + "type": "number" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "concurrent", + "python_symbol": "wrangles.recipe_wrangles.main.concurrent", + "signature": "(df: pandas.core.frame.DataFrame, wrangles: list, max_concurrency: int = 10, use_multiprocessing: bool = False, functions: Union[function, list] = [], variables: dict = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "wrangles", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "max_concurrency", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 10 + }, + { + "name": "use_multiprocessing", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df", + "functions", + "variables" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Run multiple wrangles concurrently rather than sequentially. Wrangles must specify output columns to be used concurrently. When using concurrent, Wrangles may not complete in a predictable order and it is not recommended to update overlapping columns with different wrangles.", + "additionalProperties": false, + "required": [ + "wrangles" + ], + "properties": { + "wrangles": { + "type": "array", + "description": "The wrangles section of a recipe to execute for each combination of variables", + "minItems": 1, + "items": [ + { + "$ref": "#/$defs/wrangles/items" + } + ] + }, + "max_concurrency": { + "type": "integer", + "description": "The maximum number of wrangles to execute in parallel", + "minimum": 1 + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "convert.case", + "python_symbol": "wrangles.recipe_wrangles.convert.case", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list] = None, case: str = 'lower') -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "case", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "lower" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Change the case of the input.", + "additionalProperties": false, + "required": [ + "input", + "case" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input columns" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of output columns" + }, + "case": { + "type": "string", + "description": "The case to convert to. lower, upper, title or sentence", + "enum": [ + "lower", + "upper", + "title", + "sentence" + ] + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "convert.data_type", + "python_symbol": "wrangles.recipe_wrangles.convert.data_type", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list] = None, data_type: str = 'str', default: = None, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "data_type", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "str" + }, + { + "name": "default", + "kind": "positional_or_keyword", + "required": false, + "annotation": "", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Change the data type of the input.", + "additionalProperties": false, + "required": [ + "input", + "data_type" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input columns" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of output columns" + }, + "data_type": { + "type": "string", + "description": "The new data type", + "enum": [ + "str", + "float", + "int", + "bool", + "datetime" + ] + }, + "default": { + "type": [ + "string", + "number", + "array", + "boolean", + "datetime" + ], + "description": "Set the default value to return if the input data \ncannot be converted to the specified data_type." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "convert.fraction_to_decimal", + "python_symbol": "wrangles.recipe_wrangles.convert.fraction_to_decimal", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], decimals: int = 4, output: Union[str, list] = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "decimals", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 4 + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Convert fractions to decimals", + "additionalProperties": false, + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output colum" + }, + "decimals": { + "type": [ + "number" + ], + "description": "Number of decimals to round fraction" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "convert.from_json", + "python_symbol": "wrangles.recipe_wrangles.convert.from_json", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list] = None, default=None, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "default", + "kind": "positional_or_keyword", + "required": false, + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Convert a JSON representation into an object", + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column. If omitted, the input column will be overwritten" + }, + "default": { + "type": [ + "string", + "array", + "object", + "number", + "boolean", + "null" + ], + "description": "Value to return if the row is empty or fails to be parsed as JSON. If input is a list, default may also be a list - either a single value to apply to all columns, or one value per input column." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "convert.from_yaml", + "python_symbol": "wrangles.recipe_wrangles.convert.from_yaml", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list] = None, default=None, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "default", + "kind": "positional_or_keyword", + "required": false, + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Convert a YAML representation into an object", + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column. If omitted, the input column will be overwritten" + }, + "default": { + "type": [ + "string", + "array", + "object", + "number", + "boolean", + "null" + ], + "description": "Value to return if the row is empty or fails to be parsed as YAML. If input is a list, default may also be a list - either a single value to apply to all columns, or one value per input column." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "convert.to_json", + "python_symbol": "wrangles.recipe_wrangles.convert.to_json", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list] = None, ensure_ascii: bool = False, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "ensure_ascii", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Convert an object to a JSON representation.", + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column. If omitted, the input column will be overwritten" + }, + "indent": { + "type": [ + "string", + "integer" + ], + "description": "If indent is a non-negative integer or string, then JSON array elements and object members will be pretty-printed with that indent level. An indent level of 0, negative, or \"\" will only insert newlines. None (the default) selects the most compact representation. Using a positive integer indent indents that many spaces per level. If indent is a string (such as '\\t'), that string is used to indent each level." + }, + "sort_keys": { + "type": "boolean", + "description": "If sort_keys is true (defaults to False), then the output of dictionaries will be sorted by key." + }, + "ensure_ascii": { + "type": "boolean", + "description": "If true, non-ASCII characters will be escaped. Default is false" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "convert.to_yaml", + "python_symbol": "wrangles.recipe_wrangles.convert.to_yaml", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list] = None, sort_keys: bool = False, allow_unicode: bool = True, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "sort_keys", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "allow_unicode", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Convert an object to a YAML representation.", + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column. If omitted, the input column will be overwritten" + }, + "indent": { + "type": "integer", + "description": "Specify the number of spaces for indentation to specify nested elements" + }, + "sort_keys": { + "type": "boolean", + "description": "If sort_keys is true (default: False), then the output of dictionaries will be sorted by key." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "copy", + "python_symbol": "wrangles.recipe_wrangles.pandas.copy", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list] = None, output: Union[str, list] = None, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, int, list]", + "default": null + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Make a copy of a column or a list of columns", + "additionalProperties": false, + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input columns or columns" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output columns or columns" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "create.bins", + "python_symbol": "wrangles.recipe_wrangles.create.bins", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list], bins: Union[int, list], labels: Union[str, list] = None, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "bins", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[int, list]" + }, + { + "name": "labels", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Create a column that groups data into bins", + "additionalProperties": false, + "required": [ + "input", + "output", + "bins" + ], + "properties": { + "input": { + "type": [ + "array" + ], + "description": "Name of input column" + }, + "output": { + "type": [ + "array" + ], + "description": "Name of new column" + }, + "bins": { + "type": [ + "integer", + "array" + ], + "description": "Defines the number of equal-width bins in the range" + }, + "labels": { + "type": [ + "string", + "array" + ], + "description": "Labels for the returned bins" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "create.column", + "python_symbol": "wrangles.recipe_wrangles.create.column", + "signature": "(df: pandas.core.frame.DataFrame, output: Union[str, list], value=None, value_if_exists: str = 'existing', coalesce_value: str = 'existing') -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "value", + "kind": "positional_or_keyword", + "required": false, + "default": null + }, + { + "name": "value_if_exists", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "existing" + }, + { + "name": "coalesce_value", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "existing" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Create column(s) with a user defined value. Defaults to None (empty).", + "additionalProperties": false, + "required": [ + "output" + ], + "properties": { + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of names of new columns or column_name: value pairs." + }, + "value": { + "type": [ + "string", + "number", + "object", + "array", + "boolean" + ], + "description": "(Optional) Value(s) to add in the new column(s). If using a dictionary in output, value can only be a string." + }, + "value_if_exists": { + "type": "string", + "description": "Determines behaviour when the output column already exists. existing (default): leave the column unchanged. coalesce: fill empty/null cells with the new value, keeping non-null cells. new: overwrite the entire column with the new value.", + "enum": [ + "existing", + "coalesce", + "new" + ] + }, + "coalesce_value": { + "type": "string", + "description": "Only used when value_if_exists is coalesce. Determines which side is preferred when both the existing and new values are non-empty. existing (default): keep the existing value, only fill empty/null cells with the new value. new: keep the new value, only fall back to the existing value where the new value is empty/null.", + "enum": [ + "existing", + "new" + ] + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "create.embeddings", + "python_symbol": "wrangles.recipe_wrangles.create.embeddings", + "signature": "(df: pandas.core.frame.DataFrame, input: str, api_key: str, output: str = None, batch_size: int = 100, threads: int = 10, output_type: str = 'python list', model: str = 'text-embedding-3-small', retries: int = 0, url: str = 'https://api.openai.com/v1/embeddings', precision: str = 'float32', provider: str = None, task: str = None, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "api_key", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "batch_size", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 100 + }, + { + "name": "threads", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 10 + }, + { + "name": "output_type", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "python list" + }, + { + "name": "model", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "text-embedding-3-small" + }, + { + "name": "retries", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 0 + }, + { + "name": "url", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "https://api.openai.com/v1/embeddings" + }, + { + "name": "precision", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "float32" + }, + { + "name": "provider", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "task", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Create an embedding based on text input.", + "required": [ + "input", + "api_key" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "The column of text to create the embeddings for." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "The output column the embeddings will be saved as." + }, + "api_key": { + "type": "string", + "description": "The API key." + }, + "model": { + "type": "string", + "description": "The specific model to use to generate the embeddings." + }, + "batch_size": { + "type": "integer", + "description": "The number of rows to submit per individual request." + }, + "threads": { + "type": "integer", + "description": "The number of requests to submit in parallel. Each request contains the number of rows set as batch_size." + }, + "output_type": { + "type": "string", + "description": "Output the embeddings as a numpy array or a python list Default - python list.", + "enum": [ + "numpy array", + "python list" + ] + }, + "retries": { + "type": "integer", + "description": "The number of times to retry if the request fails. This will apply exponential backoff to help with rate limiting." + }, + "provider": { + "type": "string", + "description": "Controls the request/response format for the embedding API. When omitted, inferred from url (jina.ai → jina, otherwise openai). Setting provider also sets the default url for that provider, so you only need one of provider or url for standard endpoints. Use both together only when pointing to a custom endpoint that uses a non-default provider's API format (e.g. a Jina-compatible proxy).", + "enum": [ + "openai", + "jina" + ] + }, + "url": { + "type": "string", + "description": "The endpoint to send embedding requests to. Defaults to the standard endpoint for the resolved provider. Setting a Jina URL without an explicit provider will automatically use Jina's request/response format." + }, + "precision": { + "type": "string", + "description": "The precision of the embeddings. Default is float32. This should be used with output_type numpy array.", + "enum": [ + "float16", + "float32" + ] + }, + "task": { + "type": "string", + "description": "The task type for the embedding model. Only applicable for the Jina provider. Selects the appropriate task-specific adapter.", + "enum": [ + "retrieval.query", + "retrieval.passage", + "text-matching", + "classification", + "separation" + ] + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "create.guid", + "python_symbol": "wrangles.recipe_wrangles.create.guid", + "signature": "(df: pandas.core.frame.DataFrame, output: Union[str, list]) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Create column(s) with a GUID.", + "additionalProperties": false, + "required": [ + "output" + ], + "properties": { + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of names of new columns" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "create.hash", + "python_symbol": "wrangles.recipe_wrangles.create.hash", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list], method: str = 'md5') -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "method", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "md5" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Create a hash of a column", + "additionalProperties": false, + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of input column" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of new column" + }, + "method": { + "type": "string", + "description": "The method to use to hash the input (Default: md5)", + "enum": [ + "md5", + "sha1", + "sha256", + "sha512" + ] + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "create.index", + "python_symbol": "wrangles.recipe_wrangles.create.index", + "signature": "(df: pandas.core.frame.DataFrame, output: Union[str, list], start: int = 1, step: int = 1, by=None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "start", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 1 + }, + { + "name": "step", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 1 + }, + { + "name": "by", + "kind": "positional_or_keyword", + "required": false, + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Create column(s) with an incremental index. e.g. 1,2,3...", + "additionalProperties": false, + "required": [ + "output" + ], + "properties": { + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of names of new columns" + }, + "start": { + "type": "integer", + "description": "(Optional; default 1) Starting number for the index" + }, + "step": { + "type": "integer", + "description": "(Optional; default 1) Step between successive rows" + }, + "by": { + "type": [ + "string", + "array" + ], + "description": "Optional. Cluster the created indexes by one or more columns" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "create.jinja", + "python_symbol": "wrangles.recipe_wrangles.create.jinja", + "signature": "(df: pandas.core.frame.DataFrame, template: dict, output: list, input: str = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "template", + "kind": "positional_or_keyword", + "required": true, + "annotation": "dict" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "input", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Output text using a jinja template", + "additionalProperties": false, + "required": [ + "output", + "template" + ], + "properties": { + "input": { + "type": [ + "string", + "integer" + ], + "description": "Specify a name of column containing a dictionary of elements to be used in jinja template.\nOtherwise, the column headers will be used as keys.\n" + }, + "output": { + "type": "string", + "description": "Name of the column to be output to." + }, + "template": { + "type": "object", + "description": "A dictionary which defines the template/location as well as the form which the template is input.\nIf any keys use a space, they must be replaced with an underscore. Note: spaces within column names\nare replaced by underscores (_).\n", + "additionalProperties": false, + "properties": { + "file": { + "type": "string", + "description": "A .jinja file containing the template" + }, + "column": { + "type": "string", + "description": "A column containing the jinja template - this will apply to the corresponding row." + }, + "string": { + "type": "string", + "description": "A string which is used as the jinja template" + } + } + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "create.uuid", + "python_symbol": "wrangles.recipe_wrangles.create.uuid", + "signature": "(df: pandas.core.frame.DataFrame, output: Union[str, list]) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Create column(s) with a UUID.", + "additionalProperties": false, + "required": [ + "output" + ], + "properties": { + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of names of new columns" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "date_calculator", + "python_symbol": "wrangles.recipe_wrangles.main.date_calculator", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, pandas._libs.tslibs.timestamps.Timestamp], operation: str = 'add', output: Union[str, pandas._libs.tslibs.timestamps.Timestamp] = None, time_unit: str = None, time_value: float = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, pandas._libs.tslibs.timestamps.Timestamp]" + }, + { + "name": "operation", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "add" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, pandas._libs.tslibs.timestamps.Timestamp]", + "default": null + }, + { + "name": "time_unit", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "time_value", + "kind": "positional_or_keyword", + "required": false, + "annotation": "float", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Add or Subtract time from a date", + "additionalProperties": false, + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer" + ], + "description": "Name of the dates column" + }, + "operation": { + "type": "string", + "description": "Date operation", + "enum": [ + "add", + "subtract" + ] + }, + "output": { + "type": "string", + "description": "Name of the output column of dates" + }, + "time_unit": { + "type": "string", + "description": "time unit for operation", + "enum": [ + "years", + "months", + "weeks", + "days", + "hours", + "minutes", + "seconds", + "milliseconds" + ] + }, + "time_value": { + "type": "number", + "description": "time unit value for operation" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "drop", + "python_symbol": "wrangles.recipe_wrangles.pandas.drop", + "signature": "(df: pandas.core.frame.DataFrame, columns: Union[str, list]) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "columns", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": false, + "where_params": false + }, + "where_mode": "unsupported", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Drop (Delete) selected column(s)", + "additionalProperties": true, + "required": [ + "columns" + ], + "properties": { + "columns": { + "type": [ + "array", + "string" + ], + "description": "Name of the column(s) to drop" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "explode", + "python_symbol": "wrangles.recipe_wrangles.pandas.explode", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], reset_index: bool = True, drop_empty: bool = False, where=None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "reset_index", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + }, + { + "name": "drop_empty", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "where", + "kind": "positional_or_keyword", + "required": false, + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Explode a column of lists into rows", + "additionalProperties": false, + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the column(s) to explode. If multiple columns are included they must contain lists of the same length" + }, + "reset_index": { + "type": "boolean", + "description": "Reset the index after exploding. Default True." + }, + "drop_empty": { + "type": "boolean", + "description": "If true, any rows that contain an empty list will be dropped.\nIf false, rows that contain empty lists will keep 1 row with an empty value.\nDefault False." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "extract.address", + "python_symbol": "wrangles.recipe_wrangles.extract.address", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list], dataType: str, output_format: str = None, char: str = ', ', **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "dataType", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output_format", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "char", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": ", " + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Extract parts of addresses. Requires WrangleWorks Account.", + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column." + }, + "dataType": { + "type": "string", + "description": "Specific part of the address to extract", + "enum": [ + "streets", + "cities", + "regions", + "countries" + ] + }, + "output_format": { + "type": "string", + "description": "Format of the extract output", + "enum": [ + "list", + "columns", + "concatenate" + ] + }, + "char": { + "type": "string", + "description": "Character to use when output_format is concatenate" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "extract.ai", + "python_symbol": "wrangles.recipe_wrangles.extract.ai", + "signature": "(df: pandas.core.frame.DataFrame, api_key: str, input: list = None, output: Union[dict, str, list] = None, model_id: str = None, record_examples: Union[dict, list] = None, output_format: str = None, char: str = ', ', web_search: bool = False, instructions: Union[str, list] = None, **kwargs)", + "parameters": [ + { + "name": "api_key", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "input", + "kind": "positional_or_keyword", + "required": false, + "annotation": "list", + "default": null + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[dict, str, list]", + "default": null + }, + { + "name": "model_id", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "record_examples", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[dict, list]", + "default": null + }, + { + "name": "output_format", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "char", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": ", " + }, + { + "name": "web_search", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "instructions", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Extract structured data from each input row using an AI model. Define the desired fields with output, or reuse a saved definition with model_id.", + "additionalProperties": false, + "required": [ + "api_key" + ], + "anyOf": [ + { + "required": [ + "output" + ] + }, + { + "required": [ + "model_id" + ] + } + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Input column name, column index, or list of columns supplied together as DATA for each row. If omitted, all dataframe columns are supplied.", + "items": { + "type": [ + "string", + "integer" + ] + } + }, + "output": { + "type": [ + "object", + "string", + "array" + ], + "description": "Desired extraction. Use an object keyed by output column name for structured fields, a string for one prompted value, or an array of field names/definitions. Each field may use the schema options below.", + "patternProperties": { + "^[a-zA-Z0-9 _-]+$": { + "type": [ + "object", + "string" + ], + "properties": { + "type": { + "type": "string", + "description": "JSON data type required for this field. If omitted, common scalar types are accepted. Fields allow null by default.", + "enum": [ + "string", + "number", + "integer", + "boolean", + "null", + "object", + "array" + ] + }, + "description": { + "type": "string", + "description": "Plain-language definition of the value to extract, including any selection, normalization, unit, or evidence rules." + }, + "enum": { + "type": "array", + "description": "Allowed output values. The model must choose one of these values; null is also allowed unless nullable is false." + }, + "default": { + "type": [ + "string", + "number", + "integer", + "boolean", + "null", + "object", + "array" + ], + "description": "JSON Schema annotation for a preferred default. extract.ai does not substitute this value when evidence is missing; describe fallback behavior explicitly or allow null." + }, + "examples": { + "title": "Field examples", + "type": [ + "array", + "object", + "string", + "number", + "integer", + "boolean", + "null" + ], + "description": "Field-specific examples. The backward-compatible form is a scalar or list of typical output values. A paired example may instead use input and output, with optional name and notes. Paired examples apply only to this output field; use record_examples for complete output records. Object outputs must include every required non-null nested property.", + "properties": { + "name": { + "type": "string", + "description": "Optional label included with this paired field example." + }, + "notes": { + "type": "string", + "description": "Optional explanatory guidance included with this paired field example." + }, + "input": { + "description": "Source value or record for this paired field example. Plain multiline strings remain text; use an explicit object when the runtime input is structured." + }, + "output": { + "description": "Expected value for this output field only." + } + }, + "items": { + "anyOf": [ + { + "type": "object", + "required": [ + "input", + "output" + ], + "properties": { + "name": { + "type": "string", + "description": "Optional label included with this paired field example." + }, + "notes": { + "type": "string", + "description": "Optional explanatory guidance included with this paired field example." + }, + "input": { + "description": "Source value or record for this paired field example. Plain multiline strings remain text; use an explicit object when the runtime input is structured." + }, + "output": { + "description": "Expected value for this output field only." + } + } + }, + { + "description": "Backward-compatible output-only example value." + } + ] + } + }, + "properties": { + "type": [ + "object", + "array", + "string" + ], + "description": "Child fields when type is object. Use an object to define a schema for each child. A list or comma-separated string is a shortcut that creates fixed child names. Named child values are non-null by default." + }, + "required": { + "type": [ + "array", + "string" + ], + "description": "Named object properties that must be returned. If omitted, every named property is required. Strings may use pipe or comma delimiters." + }, + "additionalProperties": { + "type": [ + "boolean", + "object" + ], + "description": "Controls keys beyond properties when type is object. Set false for fixed keys, true for arbitrary values, or provide one schema applied to every dynamic value. Dynamic dictionaries use non-strict provider mode plus local validation. Defaults to false when named properties exist." + }, + "items": { + "type": "object", + "description": "Schema applied to every element when this field's type is array." + }, + "nullable": { + "type": "boolean", + "description": "Whether the field may return null. Defaults to true while a top-level field key remains required. Named nested properties default to false. Set this explicitly to override the applicable default." + } + } + } + } + }, + "record_examples": { + "title": "Record examples", + "type": [ + "array", + "object" + ], + "description": "Whole-record examples. Each example has a separate input value or record and the complete expected output record. Optional name and notes provide model-visible context. Use {name: ..., notes: ..., input: ..., output: ...}. Omitted nullable output fields are completed with null. Required non-null nested properties must be supplied. This differs from examples nested under one output field, which teach only that field.", + "required": [ + "input", + "output" + ], + "properties": { + "name": { + "type": "string", + "description": "Optional label used to identify this example in the prompt." + }, + "notes": { + "type": "string", + "description": "Optional explanatory guidance included with this example." + }, + "input": { + "description": "Source value or record the example should match." + }, + "output": { + "description": "Expected result using the field names defined by output." + } + }, + "items": { + "type": "object", + "required": [ + "input", + "output" + ], + "properties": { + "name": { + "type": "string", + "description": "Optional label used to identify this example in the prompt." + }, + "notes": { + "type": "string", + "description": "Optional explanatory guidance included with this example." + }, + "input": { + "description": "Source value or record the example should match." + }, + "output": { + "description": "Expected result using the field names defined by output." + } + } + } + }, + "api_key": { + "type": "string", + "description": "OpenAI API key used for this wrangle, normally supplied through a recipe variable." + }, + "model": { + "type": "string", + "description": "OpenAI model ID for this call. If omitted, uses the configured extract.ai default; a saved model definition may supply its own model." + }, + "threads": { + "type": "integer", + "minimum": 1, + "description": "Maximum number of row-level requests sent in parallel. The configured default is 32." + }, + "timeout": { + "type": "number", + "exclusiveMinimum": 0, + "description": "Maximum seconds for one HTTP attempt. The configured default is 12; deadline can end the overall call sooner." + }, + "retries": { + "type": "integer", + "minimum": 0, + "description": "Number of additional attempts after a retryable failure. The configured default is 1. Backoff and request timeouts remain bounded by deadline." + }, + "url": { + "type": "string", + "description": "Override the endpoint for the selected protocol. A chat/completions URL\nselects the legacy protocol only when protocol is omitted; new recipes\nshould use the configured Responses endpoint." + }, + "provider": { + "type": "string", + "description": "AI service provider. Currently only OpenAI is supported.", + "enum": [ + "openai" + ] + }, + "protocol": { + "type": "string", + "description": "OpenAI API protocol. Responses is the configured default and is required for web_search; chat_completions remains available for legacy definitions.", + "enum": [ + "responses", + "chat_completions" + ] + }, + "deadline": { + "type": "number", + "exclusiveMinimum": 0, + "description": "Total seconds allowed for the entire wrangle call, including queued work, retries, and backoff. The configured default is 15." + }, + "store": { + "type": "boolean", + "description": "Whether OpenAI may store Responses API results. Defaults to false." + }, + "cache": { + "type": "boolean", + "description": "Reuse identical successful results from the bounded warm-instance cache. Defaults to true. Set false when fresh model or web results are required." + }, + "cache_ttl": { + "type": "number", + "exclusiveMinimum": 0, + "description": "Maximum age in seconds for a cached result used by this call. Applies to extracted values and web_search_sources together." + }, + "instructions": { + "title": "Instructions", + "type": [ + "string", + "array" + ], + "description": "Additional guidance applied to every input row. Use this for decision rules, evidence priorities, normalization requirements, or other behavior that applies to the complete extraction.", + "items": { + "type": "string" + } + }, + "model_id": { + "type": "string", + "description": "ID of a saved extract.ai definition. Use it instead of defining an output schema. When output is also supplied with model_id in a recipe, output names the destination column or columns for the saved fields." + }, + "strict": { + "type": "boolean", + "description": "Require OpenAI structured-output strict mode. Defaults to true. Definitions with dynamic dictionary keys automatically switch to non-strict provider mode and are still validated locally." + }, + "output_format": { + "type": "string", + "description": "How extracted fields are written. columns writes one dataframe column per field (default); dictionary keeps one object; concatenate joins fields into one string using char.", + "enum": [ + "dictionary", + "columns", + "concatenate" + ] + }, + "char": { + "type": "string", + "description": "Separator used only when output_format is concatenate. Defaults to comma-space." + }, + "reasoning": { + "type": "object", + "description": "Responses API reasoning controls. Set effort for reasoning-capable models. The configured default is none when that model supports it; otherwise the provider default applies.", + "properties": { + "effort": { + "type": "string", + "description": "Amount of reasoning work requested from a compatible model.", + "enum": [ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh" + ] + } + } + }, + "verbosity": { + "type": "string", + "description": "Responses API text verbosity for compatible models. Defaults to low when supported; ignored with a warning for incompatible models.", + "enum": [ + "low", + "medium", + "high" + ] + }, + "web_search": { + "type": "boolean", + "description": "Enable OpenAI Responses web search; the model decides when searching helps. When true, every row also receives web_search_sources: a deduplicated list of {title, url} objects in source order, or an empty list when no source was used. This reserved column is automatic. Requires protocol responses. Defaults to false." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "extract.attributes", + "python_symbol": "wrangles.recipe_wrangles.extract.attributes", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list], responseContent: str = 'span', attribute_type: str = None, desired_unit: str = None, bound: str = 'mid', first_element: bool = False, output_format: str = None, char: str = ', ', **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "responseContent", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "span" + }, + { + "name": "attribute_type", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "desired_unit", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "bound", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "mid" + }, + { + "name": "first_element", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "output_format", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "char", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": ", " + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Extract numeric attributes from the input such as weights or lengths. Requires WrangleWorks Account.", + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column." + }, + "attribute_type": { + "type": "string", + "description": "Request only a specific type of attribute", + "enum": [ + "angle", + "area", + "capacitance", + "charge", + "current", + "data transfer rate", + "electrical conductance", + "electrical resistance", + "energy", + "force", + "frequency", + "inductance", + "instance frequency", + "length", + "luminous flux", + "weight", + "power", + "pressure", + "speed", + "velocity", + "temperature", + "time", + "voltage", + "volume", + "volumetric flow" + ] + }, + "responseContent": { + "type": "string", + "description": "span - returns the text found. object - returns an object with the value and unit", + "enum": [ + "span", + "object" + ] + }, + "bound": { + "type": "string", + "description": "When returning an object, if the input is a range (e.g. 10-20mm) set the value to return. min, mid or max. Default mid.", + "enum": [ + "min", + "mid", + "max" + ] + }, + "desired_unit": { + "type": "string", + "description": "Convert the extracted unit to the desired unit" + }, + "first_element": { + "type": "boolean", + "description": "Get the first element from results" + }, + "output_format": { + "type": "string", + "description": "Format of the extract output", + "enum": [ + "list", + "dictionary", + "columns", + "concatenate" + ] + }, + "char": { + "type": "string", + "description": "Character to use when output_format is concatenate" + } + }, + "$ref": "#/$defs/misc/unit_entity_map" + }, + "plain_docstring": null + }, + { + "runtime_key": "extract.brackets", + "python_symbol": "wrangles.recipe_wrangles.extract.brackets", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list], find: Union[str, list] = 'all', include_brackets: bool = False, output_format: str = None, char: str = ', ') -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "find", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": "all" + }, + { + "name": "include_brackets", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "output_format", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "char", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": ", " + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Extract text properties in brackets from the input", + "additionalProperties": false, + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output columns" + }, + "find": { + "type": [ + "string", + "array" + ], + "description": "(Optional) The type of brackets to find (round '()', square '[]', curly '{}', angled '<>'). Default is all brackets." + }, + "include_brackets": { + "type": "boolean", + "description": "(Optional) Include the brackets in the output" + }, + "output_format": { + "type": "string", + "description": "Format of the extract output", + "enum": [ + "list", + "columns", + "concatenate" + ] + }, + "char": { + "type": "string", + "description": "Character to use when output_format is concatenate" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "extract.codes", + "python_symbol": "wrangles.recipe_wrangles.extract.codes", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list], first_element: bool = False, output_format: str = None, char: str = ', ', **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "first_element", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "output_format", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "char", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": ", " + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Extract alphanumeric codes from the input. Requires WrangleWorks Account.", + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input columns." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of output columns" + }, + "first_element": { + "type": "boolean", + "description": "Get the first element from results" + }, + "output_format": { + "type": "string", + "description": "Format of the extract output", + "enum": [ + "list", + "columns", + "concatenate" + ] + }, + "char": { + "type": "string", + "description": "Character to use when output_format is concatenate" + }, + "min_length": { + "type": [ + "integer", + "string" + ], + "description": "Minimum length of allowed results" + }, + "max_length": { + "type": [ + "integer", + "string" + ], + "description": "Maximum length of allowed results" + }, + "strategy": { + "type": "string", + "description": "Controls filtering of likely false positives such as measurements. Lenient skips this filter; balanced and strict currently apply the same filter. Default is balanced. Unless min_length is provided, minimum lengths default to 3 for lenient, 4 for balanced, and 5 for strict.", + "enum": [ + "lenient", + "balanced", + "strict" + ] + }, + "sort_order": { + "type": "string", + "description": "Default is input order. Also allows longest or shortest.", + "enum": [ + "input", + "longest", + "shortest" + ] + }, + "disallowed_patterns": { + "type": "string", + "description": "A pattern or JSON array of regex patterns to not include in the found codes" + }, + "include_multi_part_tokens": { + "type": "boolean", + "description": "Whether to include multi-part tokens that have a space. Default True." + }, + "extract_raw": { + "type": "boolean", + "description": "Whether to return tokens with their adjacent non-whitespace characters included, rather than the cleaned token. Default False." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "extract.custom", + "python_symbol": "wrangles.recipe_wrangles.extract.custom", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], model_id: Union[str, list], output: Union[str, list] = None, use_labels: bool = False, first_element: bool = False, case_sensitive: bool = False, extract_raw: bool = False, use_spellcheck: bool = False, include_empty_labels: bool = True, sort: str = 'training_order', output_format: str = None, char: str = ', ', **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "model_id", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "use_labels", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "first_element", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "case_sensitive", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "extract_raw", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "use_spellcheck", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "include_empty_labels", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + }, + { + "name": "sort", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "training_order" + }, + { + "name": "output_format", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "char", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": ", " + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Extract data from the input using a DIY or bespoke extraction wrangle. Requires WrangleWorks Account and Subscription.", + "required": [ + "input", + "model_id" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input columns." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of output columns" + }, + "model_id": { + "type": [ + "string", + "array" + ], + "description": "The ID of the wrangle to use" + }, + "use_labels": { + "type": "boolean", + "description": "Use Labels in the extract output {label: value}" + }, + "first_element": { + "type": "boolean", + "description": "Get the first element from results" + }, + "case_sensitive": { + "type": "boolean", + "description": "Allows the wrangle to be case sensitive if set to True, default is False." + }, + "extract_raw": { + "type": "boolean", + "description": "Extract the raw data from the wrangle" + }, + "use_spellcheck": { + "type": "boolean", + "description": "Use spellcheck to also find minor mispellings compared to the reference data" + }, + "sort": { + "type": "string", + "description": "Sort the results", + "enum": [ + "training_order", + "input_order", + "longest", + "shortest", + "alphabetical", + "reverse_alphabetical", + "ascending", + "descending" + ] + }, + "output_format": { + "type": "string", + "description": "Format of the extract output", + "enum": [ + "list", + "dictionary", + "columns", + "concatenate" + ] + }, + "char": { + "type": "string", + "description": "Character to use when output_format is concatenate" + }, + "include_empty_labels": { + "type": "boolean", + "description": "Include labels with no found values in the output when using use_labels=True" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "extract.date_properties", + "python_symbol": "wrangles.recipe_wrangles.extract.date_properties", + "signature": "(df: pandas.core.frame.DataFrame, input: pandas._libs.tslibs.timestamps.Timestamp, property: str, output: str = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "pandas._libs.tslibs.timestamps.Timestamp" + }, + { + "name": "property", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Extract date properties from a date (day, month, year, etc...)", + "additionalProperties": false, + "required": [ + "input", + "property" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output columns" + }, + "property": { + "type": "string", + "description": "Property to extract from date", + "enum": [ + "day", + "day_of_year", + "month", + "month_name", + "weekday", + "week_day_name", + "week_year", + "quarter" + ] + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "extract.date_range", + "python_symbol": "wrangles.recipe_wrangles.extract.date_range", + "signature": "(df: pandas.core.frame.DataFrame, start_time: pandas._libs.tslibs.timestamps.Timestamp, end_time: pandas._libs.tslibs.timestamps.Timestamp, output: str, range: str = 'day') -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "start_time", + "kind": "positional_or_keyword", + "required": true, + "annotation": "pandas._libs.tslibs.timestamps.Timestamp" + }, + { + "name": "end_time", + "kind": "positional_or_keyword", + "required": true, + "annotation": "pandas._libs.tslibs.timestamps.Timestamp" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "range", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "day" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Extract date range frequency from two dates", + "additionalProperties": false, + "required": [ + "start_time", + "end_time", + "output", + "range" + ], + "properties": { + "start_time": { + "type": "string", + "description": "Name of the start date column" + }, + "end_time": { + "type": "string", + "description": "Name of the end date column" + }, + "output": { + "type": "string", + "description": "Name of the output column" + }, + "range": { + "type": "string", + "description": "Type of frequency to count", + "enum": [ + "business days", + "days", + "weeks", + "months", + "semi months", + "business month ends", + "month starts", + "semi month starts", + "business month starts", + "quarters", + "quarter starts", + "years", + "business hours", + "hours", + "minutes", + "seconds", + "milliseconds" + ] + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "extract.html", + "python_symbol": "wrangles.recipe_wrangles.extract.html", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], data_type: str, output: Union[str, list] = None, output_format: str = None, char: str = ', ', **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "data_type", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "output_format", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "char", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": ", " + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Extract elements from strings containing html. Requires WrangleWorks Account.", + "required": [ + "input", + "output", + "data_type" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input columns." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of output columns" + }, + "data_type": { + "type": "string", + "description": "The type of data to extract", + "enum": [ + "text", + "links" + ] + }, + "output_format": { + "type": "string", + "description": "Format of the extract output", + "enum": [ + "list", + "columns", + "concatenate" + ] + }, + "char": { + "type": "string", + "description": "Character to use when output_format is concatenate" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "extract.properties", + "python_symbol": "wrangles.recipe_wrangles.extract.properties", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list], property_type: str = None, return_data_type: str = 'list', first_element: bool = False, output_format: str = None, char: str = ', ', **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "property_type", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "return_data_type", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "list" + }, + { + "name": "first_element", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "output_format", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "char", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": ", " + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Extract text properties from the input. Requires WrangleWorks Account.", + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output columns" + }, + "property_type": { + "type": "string", + "description": "The specific type of properties to extract", + "enum": [ + "Colours", + "Materials", + "Shapes", + "Standards" + ] + }, + "return_data_type": { + "type": "string", + "description": "Legacy format option. Prefer output_format.", + "enum": [ + "list", + "string" + ] + }, + "first_element": { + "type": "boolean", + "description": "Get the first element from results" + }, + "output_format": { + "type": "string", + "description": "Format of the extract output", + "enum": [ + "list", + "dictionary", + "columns", + "concatenate" + ] + }, + "char": { + "type": "string", + "description": "Character to use when output_format is concatenate" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "extract.regex", + "python_symbol": "wrangles.recipe_wrangles.extract.regex", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], find: str, output: Union[str, list], output_pattern: str = None, first_element: bool = False, output_format: str = None, char: str = ', ') -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "find", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "output_pattern", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "first_element", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "output_format", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "char", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": ", " + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Extract matches or specific capture groups using regex", + "additionalProperties": false, + "required": [ + "input", + "output", + "find" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column(s)." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column(s)." + }, + "find": { + "type": "string", + "description": "Pattern to find using regex" + }, + "output_pattern": { + "type": "string", + "description": "Specifies the format to output matches and specific capture groups using backreferences (e.g., `\\1`, `\\2`). Default is to return entire matches.\n\n**Example**: For a regex pattern `r'(\\d+)\\s(\\w+)'` and `output_pattern = '\\2 \\1'`, with input `'120 volt'`, the output would be `'volt 120'`.\n" + }, + "first_element": { + "type": "boolean", + "description": "Get the first element from results" + }, + "output_format": { + "type": "string", + "description": "Format of the extract output", + "enum": [ + "list", + "columns", + "concatenate" + ] + }, + "char": { + "type": "string", + "description": "Character to use when output_format is concatenate" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "filter", + "python_symbol": "wrangles.recipe_wrangles.main.filter", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list] = [], equal: Union[str, list] = None, not_equal: Union[str, list] = None, is_in: Union[str, list] = None, not_in: Union[str, list] = None, greater_than: Union[int, float] = None, greater_than_equal_to: Union[int, float] = None, less_than: Union[int, float] = None, less_than_equal_to: Union[int, float] = None, between: list = None, contains: str = None, not_contains: str = None, is_null: bool = None, where: str = None, where_params: Union[list, dict] = None, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, int, list]", + "default": [] + }, + { + "name": "equal", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "not_equal", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "is_in", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "not_in", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "greater_than", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[int, float]", + "default": null + }, + { + "name": "greater_than_equal_to", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[int, float]", + "default": null + }, + { + "name": "less_than", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[int, float]", + "default": null + }, + { + "name": "less_than_equal_to", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[int, float]", + "default": null + }, + { + "name": "between", + "kind": "positional_or_keyword", + "required": false, + "annotation": "list", + "default": null + }, + { + "name": "contains", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "not_contains", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "is_null", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": null + }, + { + "name": "where", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "where_params", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[list, dict]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "overwrite_output", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Filter the dataframe based on the contents.\nIf multiple filters are specified, all must be correct.\nFor complex filters, use the where parameter.", + "additionalProperties": false, + "properties": { + "where": { + "type": "string", + "description": "Use a SQL WHERE clause to filter the data." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Variables to use in conjunctions with where.\nThis allows the query to be parameterized.\nThis uses sqlite syntax (? or :name)" + }, + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the column to filter on.\nIf multiple are provided, all must match the criteria." + }, + "equal": { + "type": [ + "string", + "array", + "boolean", + "number" + ], + "description": "Select rows where the values equal a given value." + }, + "not_equal": { + "type": [ + "string", + "array", + "boolean", + "number" + ], + "description": "Select rows where the values do not equal a given value." + }, + "is_in": { + "type": [ + "array", + "string" + ], + "description": "Select rows where the values are in a given list." + }, + "not_in": { + "type": [ + "array", + "string" + ], + "description": "Select rows where the values are not in a given list." + }, + "is_null": { + "type": "boolean", + "description": "If true, select all rows where the value is NULL. If false, where is not NULL." + }, + "greater_than": { + "type": [ + "integer", + "number" + ], + "description": "Select rows where the values are greater than a specified value. Does include the value itself." + }, + "greater_than_equal_to": { + "type": [ + "integer", + "number" + ], + "description": "Select rows where the values are greater than a specified value. Does include the value itself." + }, + "less_than": { + "type": [ + "integer", + "number" + ], + "description": "Select rows where the values are less than a specified value. Does not include the value itself." + }, + "less_than_equal_to": { + "type": [ + "integer", + "number" + ], + "description": "Select rows where the values are less than a specified value. Does include the value itself." + }, + "between": { + "type": [ + "array" + ], + "description": "Value or list of values to filter that are in between two parameter values" + }, + "contains": { + "type": "string", + "description": "Select rows where the input contains the value. Allows regular expressions." + }, + "not_contains": { + "type": "string", + "description": "Select rows where the input does not contain the value. Allows regular expressions." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "format.dates", + "python_symbol": "wrangles.recipe_wrangles.format.dates", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], format: str, output: Union[str, list] = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "format", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Format a date", + "additionalProperties": false, + "required": [ + "input", + "format" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column" + }, + "format": { + "type": [ + "string" + ], + "description": "String pattern to format date" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "format.pad", + "python_symbol": "wrangles.recipe_wrangles.format.pad", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], pad_length: int, side: str, char: str, output: Union[str, list] = None, skip_empty: bool = False) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "pad_length", + "kind": "positional_or_keyword", + "required": true, + "annotation": "int" + }, + { + "name": "side", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "char", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "skip_empty", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Pad a string to a fixed length", + "additionalProperties": false, + "required": [ + "input", + "pad_length", + "side", + "char" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column" + }, + "pad_length": { + "type": [ + "number" + ], + "description": "Length for the output" + }, + "side": { + "type": [ + "string" + ], + "description": "Side from which to fill resulting string" + }, + "char": { + "type": [ + "string" + ], + "description": "The character to pad the input with" + }, + "skip_empty": { + "type": "boolean", + "description": "If true, skip padding for empty or whitespace-only values", + "default": false + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "format.prefix", + "python_symbol": "wrangles.recipe_wrangles.format.prefix", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], value: Union[str, int, float], output: Union[str, list] = None, skip_empty: bool = False) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "value", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, float]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "skip_empty", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Add a prefix to a column", + "additionalProperties": false, + "required": [ + "input", + "value" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column" + }, + "value": { + "type": [ + "string", + "number" + ], + "description": "Prefix value to add" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "(Optional) Name of the output column" + }, + "skip_empty": { + "type": "boolean", + "description": "Whether to skip empty values", + "default": false + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "format.price_breaks", + "python_symbol": "wrangles.recipe_wrangles.format.price_breaks", + "signature": "(df: pandas.core.frame.DataFrame, input: list, categoryLabel: str, valueLabel: str) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "categoryLabel", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "valueLabel", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "missing", + "docstring_schema": null, + "plain_docstring": "Rearrange price breaks" + }, + { + "runtime_key": "format.remove_duplicates", + "python_symbol": "wrangles.recipe_wrangles.format.remove_duplicates", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list] = None, ignore_case: bool = False) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "ignore_case", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Remove duplicates from a list. Preserves input order.", + "additionalProperties": false, + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column" + }, + "ignore_case": { + "type": "boolean", + "description": "Ignore case when removing duplicates" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "format.significant_figures", + "python_symbol": "wrangles.recipe_wrangles.format.significant_figures", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], significant_figures: int = 3, output: Union[str, list] = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "significant_figures", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 3 + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Format a value to a specific number of significant figures", + "additionalProperties": false, + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column" + }, + "significant_figures": { + "type": [ + "integer" + ], + "description": "Number of significant figures to format to. Default is 3." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "format.suffix", + "python_symbol": "wrangles.recipe_wrangles.format.suffix", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], value: Union[str, int, float, list], output: str = None, skip_empty: bool = False) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "value", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, float, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "skip_empty", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Add a suffix to a column", + "additionalProperties": false, + "required": [ + "input", + "value" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column" + }, + "value": { + "type": [ + "string", + "number" + ], + "description": "Suffix value to add" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "(Optional) Name of the output column" + }, + "skip_empty": { + "type": "boolean", + "description": "Whether to skip empty values", + "default": false + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "format.trim", + "python_symbol": "wrangles.recipe_wrangles.format.trim", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list] = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Remove excess whitespace at the start and end of text.", + "additionalProperties": false, + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "generate.ai", + "python_symbol": "wrangles.recipe_wrangles.generate.ai", + "signature": "(df: pandas.core.frame.DataFrame, api_key: str, output: Union[Dict, str, List], input: Union[str, List] = None, model: str = 'gpt-5', threads: int = 20, timeout: int = 90, retries: int = 0, messages: Optional[List[dict]] = None, url: str = 'https://api.openai.com/v1/responses', strict: bool = False, web_search: bool = False, reasoning: Dict[str, str] = {'effort': 'low'}, previous_response: bool = False, summary: bool = False, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "api_key", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[Dict, str, List]" + }, + { + "name": "input", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, List]", + "default": null + }, + { + "name": "model", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "gpt-5" + }, + { + "name": "threads", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 20 + }, + { + "name": "timeout", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 90 + }, + { + "name": "retries", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 0 + }, + { + "name": "messages", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Optional[List[dict]]", + "default": null + }, + { + "name": "url", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "https://api.openai.com/v1/responses" + }, + { + "name": "strict", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "web_search", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "reasoning", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Dict[str, str]", + "default": { + "effort": "low" + } + }, + { + "name": "previous_response", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "summary", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Generate structured AI output for each recipe row.", + "additionalProperties": false, + "required": [ + "api_key", + "output" + ], + "properties": { + "api_key": { + "type": "string", + "description": "OpenAI-compatible API key." + }, + "input": { + "type": [ + "string", + "array" + ], + "description": "Column(s) to concatenate into the prompt (defaults to all columns)." + }, + "output": { + "type": [ + "string", + "object", + "array" + ], + "description": "Target schema; string/array shorthands are expanded automatically." + }, + "model": { + "type": "string", + "description": "Responses model name (e.g. gpt-5-mini)." + }, + "threads": { + "type": "integer", + "description": "Maximum concurrent requests (default 20)." + }, + "timeout": { + "type": "integer", + "description": "Per-request timeout in seconds." + }, + "retries": { + "type": "integer", + "description": "Number of retry attempts on failure." + }, + "messages": { + "type": "array", + "description": "Optional extra messages forwarded to the inner generate helper." + }, + "url": { + "type": "string", + "description": "Override for the OpenAI-compatible endpoint." + }, + "strict": { + "type": "boolean", + "description": "Enforce JSON-schema validation on the response." + }, + "web_search": { + "type": "boolean", + "description": "Enable DuckDuckGo context lookup per row." + }, + "reasoning": { + "type": "object", + "description": "Responses API reasoning options (forwarded verbatim)." + }, + "previous_response": { + "type": "boolean", + "description": "Chain responses by reusing previous_response_id for field-by-field calls." + }, + "summary": { + "type": "boolean", + "description": "Request summary text to be merged into the output." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "huggingface", + "python_symbol": "wrangles.recipe_wrangles.main.huggingface", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], api_token: str, model: str, output: Union[str, list] = None, parameters=None)", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "api_token", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "model", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "parameters", + "kind": "positional_or_keyword", + "required": false, + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Use a model from huggingface", + "required": [ + "input", + "api_token", + "model" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column. If not provided, will overwrite the input column\n" + }, + "model": { + "type": "string", + "description": "Name of the model to use. e.g. facebook/bart-large-cnn" + }, + "api_token": { + "type": "string", + "description": "Huggingface API Token" + }, + "parameters": { + "type": "object", + "description": "Optionally, provide additional parameters to define the model behaviour" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "log", + "python_symbol": "wrangles.recipe_wrangles.main.log", + "signature": "(df: pandas.core.frame.DataFrame, columns: list = None, write: list = None, error: str = None, warning: str = None, info: str = None, log_data: bool = None, **kwargs)", + "parameters": [ + { + "name": "columns", + "kind": "positional_or_keyword", + "required": false, + "annotation": "list", + "default": null + }, + { + "name": "write", + "kind": "positional_or_keyword", + "required": false, + "annotation": "list", + "default": null + }, + { + "name": "warning", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "info", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "log_data", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": null + } + ], + "internal_parameters": [ + "df", + "error" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Log the current status of the dataframe.", + "additionalProperties": false, + "properties": { + "columns": { + "type": "array", + "description": "(Optional, default all columns) List of specific columns to log." + }, + "write": { + "type": "array", + "description": "(Optional) Allows for an intermediate output to a file/dataframe/database etc.", + "minItems": 1, + "items": { + "$ref": "#/$defs/write/items" + } + }, + "error": { + "type": "string", + "description": "Log an error to the console" + }, + "warning": { + "type": "string", + "description": "Log a warning to the console" + }, + "info": { + "type": "string", + "description": "Log info to the console" + }, + "log_data": { + "type": "boolean", + "description": "Whether to log a sample of the contents of the dataframe. Default True if not logging to a write, error, warning or info. Default False otherwise." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "lookup", + "python_symbol": "wrangles.recipe_wrangles.main.lookup", + "signature": "(df: pandas.core.frame.DataFrame, input: str, output: Union[str, list] = None, model_id: str = None, lookup_mode: str = 'by_row', n: int = None, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "model_id", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "lookup_mode", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "by_row" + }, + { + "name": "n", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Lookup values from a saved lookup wrangle", + "required": [ + "input", + "model_id" + ], + "properties": { + "input": { + "type": [ + "string", + "integer" + ], + "description": "Name of the column(s) to lookup." + }, + "model_id": { + "type": "string", + "description": "The model_id to use lookup against" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column(s). When n is provided and the output list length equals n, each output column receives the corresponding match. A single output containing a wildcard (*) is expanded into n columns, e.g. \"Top *\" with n: 3 becomes \"Top 1\", \"Top 2\", \"Top 3\"." + }, + "n": { + "type": "integer", + "description": "Number of matches to return per input value. When the output list length equals n, each output column receives the corresponding match. Otherwise all n matches are stored as a list in each output column." + }, + "lookup_mode": { + "type": "string", + "description": "How to perform lookups. 'by_row' (default): lookup each row individually. 'by_dataframe': lookup unique values once, copy results to all rows. 'by_matrix': lookup once per matrix permutation.", + "enum": [ + "by_row", + "by_matrix", + "by_dataframe" + ] + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "math", + "python_symbol": "wrangles.recipe_wrangles.main.math", + "signature": "(df: pandas.core.frame.DataFrame, input: str, output: str) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Apply a mathematical calculation.", + "additionalProperties": false, + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": [ + "string", + "integer" + ], + "description": "The mathematical expression using column names. e.g. column1 * column2\n+ column3. Note: spaces within column names are replaced by underscores (_).\n" + }, + "output": { + "type": "string", + "description": "The column to output the results to" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "maths", + "python_symbol": "wrangles.recipe_wrangles.main.maths", + "signature": "(df: pandas.core.frame.DataFrame, input: str, output: str) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "missing", + "docstring_schema": null, + "plain_docstring": "Deprecated - use math" + }, + { + "runtime_key": "matrix", + "python_symbol": "wrangles.recipe_wrangles.main.matrix", + "signature": "(df: pandas.core.frame.DataFrame, variables: dict, wrangles: list, functions: Union[function, list] = [], strategy: str = 'loop')", + "parameters": [ + { + "name": "variables", + "kind": "positional_or_keyword", + "required": true, + "annotation": "dict" + }, + { + "name": "wrangles", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "strategy", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "loop" + } + ], + "internal_parameters": [ + "df", + "functions" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Apply a matrix of wrangles to the dataframe.\nThis will run the wrangles for each combination of the variables.", + "required": [ + "variables", + "wrangles" + ], + "properties": { + "variables": { + "type": "object", + "description": "A dictionary of variables to pass to the wrangle.\nThe key is the variable name and the value is a list of values." + }, + "wrangles": { + "type": "array", + "description": "The wrangles to apply to the dataframe.\nEach wrangle will be run for each combination of the variables.", + "minItems": 1, + "items": { + "$ref": "#/$defs/wrangles/items" + } + }, + "strategy": { + "type": "string", + "enum": [ + "permutations", + "loop" + ], + "description": "Determines how to combine variables when there are multiple. loop (default) iterates over each set of variables, repeating shorter lists until the longest is completed. permutations uses the combination of all variables against all other variables." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "merge.coalesce", + "python_symbol": "wrangles.recipe_wrangles.merge.coalesce", + "signature": "(df: pandas.core.frame.DataFrame, input: list, output: str = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Take the first non-empty value from a series of columns or lists.", + "additionalProperties": false, + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "array", + "string", + "integer" + ], + "description": "List of input columns or a single column containing lists" + }, + "output": { + "type": "string", + "description": "Name of the output columns. This is required if multiple input columns are provided." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "merge.concatenate", + "python_symbol": "wrangles.recipe_wrangles.merge.concatenate", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: str, char: str = ',', skip_empty: bool = False) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "char", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "," + }, + { + "name": "skip_empty", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Concatenate a list of columns or a list within a single column.", + "additionalProperties": false, + "required": [ + "input", + "output", + "char" + ], + "properties": { + "input": { + "type": [ + "array", + "string", + "integer" + ], + "description": "Either a single column name or list of columns" + }, + "output": { + "type": "string", + "description": "Name of the output column" + }, + "char": { + "type": "string", + "description": "(Optional) Character to add between successive values" + }, + "skip_empty": { + "type": "boolean", + "desription": "Whether to skip empty values", + "default": false + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "merge.dictionaries", + "python_symbol": "wrangles.recipe_wrangles.merge.dictionaries", + "signature": "(df: pandas.core.frame.DataFrame, input: list, output: str, skip_empty: bool = False) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "skip_empty", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Take dictionaries in multiple columns and merge them to a single dictionary.", + "additionalProperties": false, + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": "array", + "description": "list of input columns" + }, + "output": { + "type": "string", + "description": "Name of the output column" + }, + "skip_empty": { + "type": "boolean", + "description": "Whether to skip empty dictionaries when merging", + "default": false + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "merge.key_value_pairs", + "python_symbol": "wrangles.recipe_wrangles.merge.key_value_pairs", + "signature": "(df: pandas.core.frame.DataFrame, input: dict, output: str, skip_empty: bool = False) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "dict" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "skip_empty", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Create a dictionary from keys and values in paired columns e.g. COLUMN_NAME_1, COLUMN_VALUE_1, COLUMN_NAME_2, COLUMN_VALUE_2 ...", + "additionalProperties": false, + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": "object", + "description": "Matched pairs of key and value columns" + }, + "output": { + "type": "string", + "description": "Name of the output column" + }, + "skip_empty": { + "type": "boolean", + "description": "Whether to skip empty keys or values when creating the dictionary", + "default": false + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "merge.lists", + "python_symbol": "wrangles.recipe_wrangles.merge.lists", + "signature": "(df: pandas.core.frame.DataFrame, input: list, output: str, remove_duplicates: bool = False, ignore_case: bool = False, include_empty: bool = True) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "remove_duplicates", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "ignore_case", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "include_empty", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Take lists in multiple columns and merge them to a single list.", + "additionalProperties": false, + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": "array", + "description": "List of input columns" + }, + "output": { + "type": "string", + "description": "Name of the output column" + }, + "remove_duplicates": { + "type": "boolean", + "description": "Whether to remove duplicates from the created list" + }, + "ignore_case": { + "type": "boolean", + "description": "Ignore case when removing duplicates" + }, + "include_empty": { + "type": "boolean", + "description": "Whether to include empty values in the created list" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "merge.to_dict", + "python_symbol": "wrangles.recipe_wrangles.merge.to_dict", + "signature": "(df: pandas.core.frame.DataFrame, input: list, output: str, include_empty: bool = False) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "include_empty", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Take multiple columns and merge them to a dictionary (aka object) using the column headers as keys.", + "additionalProperties": false, + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": [ + "array", + "string", + "integer" + ], + "description": "List of input columns" + }, + "output": { + "type": "string", + "description": "Name of the output column" + }, + "include_empty": { + "type": "boolean", + "description": "Whether to include empty columns in the created dictionary" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "merge.to_list", + "python_symbol": "wrangles.recipe_wrangles.merge.to_list", + "signature": "(df: pandas.core.frame.DataFrame, input: list, output: str, include_empty: bool = False) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "include_empty", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Take multiple columns and merge them to a list.", + "additionalProperties": false, + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": [ + "array", + "string", + "integer" + ], + "description": "List of input columns" + }, + "output": { + "type": "string", + "description": "Name of the output column" + }, + "include_empty": { + "type": "boolean", + "description": "Whether to include empty columns in the created list" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "python", + "python_symbol": "wrangles.recipe_wrangles.main.python", + "signature": "(df: pandas.core.frame.DataFrame, command: str, output: Union[str, list], input: Union[str, int, list] = None, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "command", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "input", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, int, list]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Apply a simple single-line python command. For more complex python use a custom function.\nNote, this evaluates the python command - be especially cautious including\nvariables from untrusted sources within the command string.\nThe python command will be evaluated once for each row and the result returned.\nReference column values by using their name.\nNon-alphanumeric characters within column names are replaced by underscores (_)\nAdditionally, all columns are available as a dict named kwargs.\nAdditional parameters set for the wrangle will also be available to the command.", + "required": [ + "command", + "output" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input column(s) to filter the data available\nto the command. Useful in conjunction with kwargs to target\na variable range of columns.\nIf not specified, all columns will be available." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of output column(s). To output multiple columns,\nreturn a list of the corresponding length." + }, + "command": { + "type": "string", + "description": "Python command. This must return a value.\nNote: any non-alphanumeric characters in variable names\nare replaced by underscores (_)." + }, + "except": { + "type": [ + "string", + "array", + "number", + "integer", + "boolean", + "object" + ], + "description": "Value to return for the row if an exception occurs during the evaluation.\nIf not provided, an exception will be raised as normal.\nIf multiple output columns are specified, this must match the length." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "recipe", + "python_symbol": "wrangles.recipe_wrangles.main.recipe", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list] = None, output: Union[str, list] = None, name: str = None, variables=None, functions: Union[function, list] = [], **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, int, list]", + "default": null + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "name", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + }, + { + "name": "variables", + "kind": "positional_or_keyword", + "required": false, + "default": null + } + ], + "internal_parameters": [ + "df", + "functions" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "anyOf": [ + { + "$ref": "#" + }, + { + "type": "object", + "description": "Run a recipe as a Wrangle. Recipe-ception,", + "additionalProperties": false, + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "description": "file name of the recipe" + }, + "variables": { + "type": "object", + "description": "A dictionary of variables to pass to the recipe" + } + } + } + ] + }, + "plain_docstring": null + }, + { + "runtime_key": "reindex", + "python_symbol": "wrangles.recipe_wrangles.pandas.reindex", + "signature": "(df: pandas.core.frame.DataFrame, labels: list = None, index: list = None, columns: list = None, axis: Union[str, int] = None, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "labels", + "kind": "positional_or_keyword", + "required": false, + "annotation": "list", + "default": null + }, + { + "name": "index", + "kind": "positional_or_keyword", + "required": false, + "annotation": "list", + "default": null + }, + { + "name": "columns", + "kind": "positional_or_keyword", + "required": false, + "annotation": "list", + "default": null + }, + { + "name": "axis", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, int]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": false, + "where_params": false + }, + "where_mode": "unsupported", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Changes the row labels and column labels of a DataFrame.", + "additionalProperties": false, + "properties": { + "labels": { + "type": "array", + "description": "New labels / index to conform the axis specified by ‘axis’ to." + }, + "index": { + "type": "array", + "description": "New labels for the index. Preferably an Index object to avoid duplicating data." + }, + "columns": { + "type": "array", + "description": "New labels for the columns. Preferably an Index object to avoid duplicating data." + }, + "axis": { + "type": [ + "number", + "string" + ], + "description": "Axis to target. Can be either the axis name (‘index’, ‘columns’) or number (0, 1)." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "remove_words", + "python_symbol": "wrangles.recipe_wrangles.main.remove_words", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], to_remove: str, output: Union[str, list] = None, tokenize_to_remove: bool = False, ignore_case: bool = True) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "to_remove", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "tokenize_to_remove", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "ignore_case", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Remove all the elements that occur in one list from another.", + "additionalProperties": false, + "required": [ + "input", + "to_remove", + "output" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of column to remove words from" + }, + "to_remove": { + "type": "array", + "description": "Column or list of columns with a list of words to be removed" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output columns" + }, + "tokenize_to_remove": { + "type": "boolean", + "description": "Tokenize all to_remove inputs" + }, + "ignore_case": { + "type": "boolean", + "description": "Ignore input and to_remove case" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "rename", + "python_symbol": "wrangles.recipe_wrangles.main.rename", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list] = None, output: Union[str, list] = None, wrangles: list = None, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, int, list]", + "default": null + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "wrangles", + "kind": "positional_or_keyword", + "required": false, + "annotation": "list", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": false, + "where_params": false + }, + "where_mode": "unsupported", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Rename a column or list of columns.", + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input columns." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of output columns." + }, + "wrangles": { + "type": "array", + "description": "Use wrangles to transform the column names.\nThe input is named 'columns' and the final result\nmust also include the column named 'columns'.\nThis can only be used instead of the standard rename.", + "minItems": 1, + "items": { + "$ref": "#/$defs/wrangles/items" + } + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "replace", + "python_symbol": "wrangles.recipe_wrangles.main.replace", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], find: str, replace: str, output: Union[str, list] = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "find", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "replace", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Quick find and replace for simple values. Can use regex if 'input' in params and isinstance(params['input'], list):in the find field.", + "additionalProperties": false, + "required": [ + "input", + "find", + "replace" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input column" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of output column" + }, + "find": { + "type": "string", + "description": "Pattern to find using regex" + }, + "replace": { + "type": "string", + "description": "Value to replace the pattern found" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "round", + "python_symbol": "wrangles.recipe_wrangles.pandas.round", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], decimals: int = 0, output: Union[str, list] = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "decimals", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 0 + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Round column(s) to the specified decimals", + "additionalProperties": false, + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column(s)" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column(s)" + }, + "decimals": { + "type": "number", + "description": "Number of decimal places to round column" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "search.find_links", + "python_symbol": "wrangles.recipe_wrangles.search.find_links", + "signature": "(df: pandas.core.frame.DataFrame, queries: str | list, id: str, output: str | list | None = None, client: str = 'serpapi', api_key: str | None = None, n_results: int = 10, threads: int = 10, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "queries", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str | list" + }, + { + "name": "id", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str | list | None", + "default": null + }, + { + "name": "client", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "serpapi" + }, + { + "name": "api_key", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str | None", + "default": null + }, + { + "name": "n_results", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 10 + }, + { + "name": "threads", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 10 + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Perform web searches to find links. Returns structured search results with titles, links, snippets, and optional pricing.", + "additionalProperties": false, + "required": [ + "queries", + "id", + "output" + ], + "properties": { + "queries": { + "type": [ + "string", + "array" + ], + "description": "Name or list of input columns containing search queries." + }, + "id": { + "type": "string", + "description": "Name of the column containing the row ID to append to each search result." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Output column for the dictionaries. If a list of 2 is provided, outputs [dicts_column, pretty_strings_column]." + }, + "client": { + "type": "string", + "description": "The search provider to use.", + "enum": [ + "serpapi" + ], + "default": "serpapi" + }, + "api_key": { + "type": "string", + "description": "API key for the search client. Can also be set as an environment variable (e.g., SERPAPI_API_KEY)." + }, + "n_results": { + "type": "integer", + "description": "Number of search results to return per query (default 10, max 100).", + "default": 10 + }, + "threads": { + "type": "integer", + "description": "Number of concurrent threads for parallel processing (default 10).", + "default": 10 + }, + "country": { + "type": "string", + "description": "Country code for search results (default 'us'). Alias: gl.", + "default": "us" + }, + "language": { + "type": "string", + "description": "Language code for search results (default 'en'). Alias: hl.", + "default": "en" + }, + "location": { + "type": "string", + "description": "Location for search results (e.g., 'Austin, Texas')." + }, + "device": { + "type": "string", + "description": "Device type for search results.", + "enum": [ + "desktop", + "mobile", + "tablet" + ] + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "search.retrieve_link_content", + "python_symbol": "wrangles.recipe_wrangles.search.retrieve_link_content", + "signature": "(df: pandas.core.frame.DataFrame, input: str | list, output: str | list | None = None, client: str = 'google_url_context', api_key: str | None = None, prompt: str | None = None, model_id: str = 'models/gemini-3-flash-preview', output_format: str = 'json', threads: int = 10) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str | list" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str | list | None", + "default": null + }, + { + "name": "client", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "google_url_context" + }, + { + "name": "api_key", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str | None", + "default": null + }, + { + "name": "prompt", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str | None", + "default": null + }, + { + "name": "model_id", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "models/gemini-3-flash-preview" + }, + { + "name": "output_format", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "json" + }, + { + "name": "threads", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 10 + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Retrieves targeted content from web pages using LLM URL extraction. Can optionally output a second column containing a clean, human-readable text summary of the retrieved data.", + "additionalProperties": false, + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": [ + "string", + "array" + ], + "description": "Name or list of input columns containing URLs or Scored Search Result dictionaries." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column for the raw dictionaries. To output BOTH the raw dictionaries and the formatted text, provide a list of exactly two column names (e.g., [page_data, page_text])." + }, + "client": { + "type": "string", + "description": "The retrieval provider to use.", + "enum": [ + "google_url_context" + ], + "default": "google_url_context" + }, + "api_key": { + "type": "string", + "description": "API key for the provider. Can also be set as an environment variable (e.g., GOOGLE_API_KEY)." + }, + "prompt": { + "type": "string", + "description": "Optional custom system prompt to guide the extraction behavior and output format." + }, + "model_id": { + "type": "string", + "description": "The specific model ID to use (default models/gemini-3-flash-preview)." + }, + "output_format": { + "type": "string", + "description": "The desired format for the extracted content.", + "enum": [ + "markdown", + "json" + ], + "default": "json" + }, + "threads": { + "type": "integer", + "description": "Number of concurrent threads for parallel processing (default 10).", + "default": 10 + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "select.columns", + "python_symbol": "wrangles.recipe_wrangles.select.columns", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list]) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "overwrite_output", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Select columns from the dataframe", + "additionalProperties": false, + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the column(s) to select" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "select.dictionary_element", + "python_symbol": "wrangles.recipe_wrangles.select.dictionary_element", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], element: str, output: Union[str, list] = None, default: = '') -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "element", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "default", + "kind": "positional_or_keyword", + "required": false, + "annotation": "", + "default": "" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Select one or more element of a dictionary.", + "additionalProperties": false, + "required": [ + "input", + "element" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column. If omitted, the input column will be replaced." + }, + "element": { + "type": [ + "string", + "array" + ], + "description": "The key or keys from the dictionary to select.\nIf a single key is provided, the value will be returned\nIf a lists of keys are selected,\nthe result will be a new dictionary." + }, + "default": { + "type": [ + "string", + "number", + "array", + "object", + "boolean", + "null" + ], + "description": "Set the default value to return if the specified element doesn't exist.\nIf selecting multiple elements, a dict of defaults can be set." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "select.element", + "python_symbol": "wrangles.recipe_wrangles.select.element", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list] = None, default: Union[, list] = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "default", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[, list]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Select elements of lists or dicts using python syntax like col[0]['key']", + "additionalProperties": false, + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column and sub elements This permits by index for lists or dict and by key for dicts e.g. col[0]['key'] // [{\"key\":\"val\"}] -> \"val\"" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column(s)" + }, + "default": { + "type": [ + "string", + "number", + "array", + "object", + "boolean" + ], + "description": "Set the default value to return if the specified element doesn't exist.", + "default": "" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "select.group_by", + "python_symbol": "wrangles.recipe_wrangles.select.group_by", + "signature": "(df, by=[], functions: Union[function, list] = [], auto_rename_columns: bool = True, **kwargs)", + "parameters": [ + { + "name": "by", + "kind": "positional_or_keyword", + "required": false, + "default": [] + }, + { + "name": "auto_rename_columns", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + } + ], + "internal_parameters": [ + "df", + "functions" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "overwrite_output", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Group and aggregate the data", + "properties": { + "by": { + "type": [ + "string", + "array" + ], + "description": "List of the input columns to group on" + }, + "list": { + "type": [ + "string", + "array" + ], + "description": "Group and return all values for these column(s) as a list" + }, + "first": { + "type": [ + "string", + "array" + ], + "description": "The first value for these column(s)" + }, + "last": { + "type": [ + "string", + "array" + ], + "description": "The last value for these column(s)" + }, + "min": { + "type": [ + "string", + "array" + ], + "description": "The minimum value for these column(s)" + }, + "max": { + "type": [ + "string", + "array" + ], + "description": "The maximum value for these column(s)" + }, + "mean": { + "type": [ + "string", + "array" + ], + "description": "The mean (average) value for these column(s)" + }, + "median": { + "type": [ + "string", + "array" + ], + "description": "The median value for these column(s)" + }, + "nunique": { + "type": [ + "string", + "array" + ], + "description": "The count of unique values for these column(s)" + }, + "count": { + "type": [ + "string", + "array" + ], + "description": "The count of values for these column(s)" + }, + "counts": { + "type": [ + "string", + "array" + ], + "description": "Return a dictionary containing the count of each distinct value for these column(s). Keys are converted to JSON-safe strings; missing values use the key \"null\" and booleans use lowercase \"true\"/\"false\"." + }, + "std": { + "type": [ + "string", + "array" + ], + "description": "The standard deviation of values for these column(s)" + }, + "sum": { + "type": [ + "string", + "array" + ], + "description": "The total of values for these column(s)" + }, + "any": { + "type": [ + "string", + "array" + ], + "description": "Return true if any of the values for these column(s) are true" + }, + "all": { + "type": [ + "string", + "array" + ], + "description": "Return true if all of the values for these column(s) are true" + }, + "p75": { + "type": [ + "string", + "array" + ], + "description": "Get a percentile. Note, you can use any integer here for the corresponding percentile." + }, + "custom.placeholder": { + "type": [ + "string", + "array" + ], + "description": "Placeholder for custom functions. Replace 'placeholder' with the name of the function." + }, + "auto_rename_columns": { + "type": "boolean", + "description": "If true (default), aggregated column names include the operation as a suffix (e.g. Value.sum). If false, column names are left as-is; use a dictionary entry to supply a custom output name (e.g. - Value: Total)." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "select.head", + "python_symbol": "wrangles.recipe_wrangles.select.head", + "signature": "(df: pandas.core.frame.DataFrame, n: int) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "n", + "kind": "positional_or_keyword", + "required": true, + "annotation": "int" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "overwrite_output", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Return the first n rows", + "required": [ + "n" + ], + "properties": { + "n": { + "type": "integer", + "description": "Number of rows to return" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "select.highest_confidence", + "python_symbol": "wrangles.recipe_wrangles.select.highest_confidence", + "signature": "(df: pandas.core.frame.DataFrame, input: list, output: Union[str, list]) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Select the option with the highest confidence from multiple columns. Inputs are expected to be of the form [<>, <>].", + "additionalProperties": false, + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": "array", + "description": "List of the input columns to select from" + }, + "output": { + "type": [ + "array", + "string" + ], + "description": "If two columns; the result and confidence. If one column; [result, confidence]" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "select.left", + "python_symbol": "wrangles.recipe_wrangles.select.left", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], length: int, output: Union[str, list] = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "length", + "kind": "positional_or_keyword", + "required": true, + "annotation": "int" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Return characters from the left of text. Strings shorter than the length defined will be unaffected.", + "additionalProperties": false, + "required": [ + "input", + "length" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the column(s) to edit" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column(s)" + }, + "length": { + "type": "integer", + "description": "Number of characters to include from the left. If negative, this will remove the specified number of characters from the left. May not equal 0." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "select.length", + "python_symbol": "wrangles.recipe_wrangles.select.length", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list] = None)", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Calculate the lengths of data in a column. The length depends on the data type e.g. text will be the length of the text, lists will be the number of elements in the list.", + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column(s)." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column(s)." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "select.list_element", + "python_symbol": "wrangles.recipe_wrangles.select.list_element", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list] = None, element: int = 0, default: = '') -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "element", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 0 + }, + { + "name": "default", + "kind": "positional_or_keyword", + "required": false, + "annotation": "", + "default": "" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Select a numbered element of a list (zero indexed).", + "additionalProperties": false, + "required": [ + "input", + "element" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column" + }, + "element": { + "type": "integer", + "description": "The numbered element of the list to select.\nStarts from zero.\nThis may use python slicing syntax to select a subset of the list." + }, + "default": { + "type": [ + "string", + "number", + "array", + "object", + "boolean", + "null" + ], + "description": "Set the default value to return if the specified element doesn't exist." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "select.right", + "python_symbol": "wrangles.recipe_wrangles.select.right", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], length: int, output: Union[str, list] = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "length", + "kind": "positional_or_keyword", + "required": true, + "annotation": "int" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Return characters from the right of text. Strings shorter than the length defined will be unaffected.", + "additionalProperties": false, + "required": [ + "input", + "length" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the column(s) to edit" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column(s)" + }, + "length": { + "type": "integer", + "description": "Number of characters to include from the right. If negative, this will remove the specified number of characters from the right. May not equal 0." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "select.sample", + "python_symbol": "wrangles.recipe_wrangles.select.sample", + "signature": "(df: pandas.core.frame.DataFrame, rows: Union[int, float], **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "rows", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[int, float]" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "overwrite_output", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Return a random sample of the rows", + "required": [ + "rows" + ], + "properties": { + "rows": { + "type": [ + "integer", + "number" + ], + "description": "If a whole number, will select that number of rows.\nIf a decimal between 0 and 1 will select that fraction \nof the rows e.g. 0.1 => 10% of rows will be returned", + "exclusiveMinimum": 0 + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "select.substring", + "python_symbol": "wrangles.recipe_wrangles.select.substring", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], start: int = None, length: int = None, output: Union[str, list] = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "start", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": null + }, + { + "name": "length", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": null + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Return characters from the middle of text.", + "additionalProperties": false, + "required": [ + "input", + "start", + "length" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the column(s) to edit" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column(s)" + }, + "start": { + "type": "integer", + "description": "The position of the first character to select.\nIf ommited will start from the beginning and length must \nbe provided.\n", + "minimum": 1 + }, + "length": { + "type": "integer", + "description": "The length of the string to select. If ommited\nwill select to the end of the string and start must be provided.\n", + "minimum": 1 + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "select.tail", + "python_symbol": "wrangles.recipe_wrangles.select.tail", + "signature": "(df: pandas.core.frame.DataFrame, n: int) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "n", + "kind": "positional_or_keyword", + "required": true, + "annotation": "int" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "overwrite_output", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Return the last n rows", + "required": [ + "n" + ], + "properties": { + "n": { + "type": "integer", + "description": "Number of rows to return" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "select.threshold", + "python_symbol": "wrangles.recipe_wrangles.select.threshold", + "signature": "(df: pandas.core.frame.DataFrame, input: list, output: str, threshold: float) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "threshold", + "kind": "positional_or_keyword", + "required": true, + "annotation": "float" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Select the first option if it exceeds a given threshold, else the second option.", + "additionalProperties": false, + "required": [ + "input", + "output", + "threshold" + ], + "properties": { + "input": { + "type": "array", + "description": "List of the input columns to select from" + }, + "output": { + "type": "string", + "description": "Name of the output column" + }, + "threshold": { + "type": "number", + "description": "Threshold above which to choose the first option, otherwise the second", + "minimum": 0, + "maximum": 1 + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "similarity", + "python_symbol": "wrangles.recipe_wrangles.main.similarity", + "signature": "(df: pandas.core.frame.DataFrame, input: list, output: str, method: str = 'cosine') -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "method", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "cosine" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Calculate the cosine similarity of two vectors", + "additionalProperties": false, + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": "array", + "description": "Two columns of vectors to compare the similarity of.", + "minItems": 2, + "maxItems": 2 + }, + "output": { + "type": "string", + "description": "Name of the output column." + }, + "method": { + "type": "string", + "description": "The type of similarity to calculate (cosine or euclidean). Adjusted cosine adjusts the default cosine calculation to cover a range of 0-1 for typical comparisons.", + "enum": [ + "cosine", + "adjusted cosine", + "euclidean" + ] + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "sort", + "python_symbol": "wrangles.recipe_wrangles.pandas.sort", + "signature": "(df: pandas.core.frame.DataFrame, ignore_index=True, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "ignore_index", + "kind": "positional_or_keyword", + "required": false, + "default": true + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "overwrite_output", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Sort the data", + "additionalProperties": true, + "required": [ + "by" + ], + "properties": { + "by": { + "type": [ + "string", + "array" + ], + "description": "Name or list of the column(s) to sort by" + }, + "ascending": { + "type": [ + "boolean", + "array" + ], + "items": { + "type": "boolean" + }, + "description": "Sort ascending vs. descending. Specify a list to sort multiple columns in different orders. If this is a list of bools then it must match the length of the by." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "split.dictionary", + "python_symbol": "wrangles.recipe_wrangles.split.dictionary", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, List], output: Union[str, List] = None, default: dict = None, output_format: str = 'columns') -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, List]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, List]", + "default": null + }, + { + "name": "default", + "kind": "positional_or_keyword", + "required": false, + "annotation": "dict", + "default": null + }, + { + "name": "output_format", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "columns" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Split one or more dictionaries into columns.\nThe dictionary keys will be returned as the new column headers.\nIf the dictionaries contain overlapping values, the last value will be returned.", + "additionalProperties": false, + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or lists of the column(s) containing dictionaries to be split.\nIf providing multiple dictionaries and the dictionaries\ncontain overlapping values, the last value will be returned." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "In columns output_format, this is an optional subset of keys to extract\nfrom the dictionary. If not provided, all keys will be returned.\nColumns can be renamed with the following syntax:\noutput:\n - key1: new_column_name1\n - key2: new_column_name2\nIn to_lists output_format, this must be two output columns for the keys\nand values lists. If not provided, Keys and Values will be used." + }, + "default": { + "type": "object", + "description": "Provide a set of default headings and values if they are not found within the input" + }, + "output_format": { + "type": "string", + "enum": [ + "columns", + "to_lists" + ], + "description": "How to split the dictionary.\ncolumns creates one output column for each dictionary key.\nto_lists creates two output columns containing lists of keys and values." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "split.list", + "python_symbol": "wrangles.recipe_wrangles.split.list", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int], output: Union[str, List]) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, List]" + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Split a list in a single column to multiple columns.", + "additionalProperties": false, + "required": [ + "input", + "output" + ], + "properties": { + "input": { + "type": [ + "string", + "int" + ], + "description": "Name of the column to be split" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of column(s) for the results. If providing a single column, use a wildcard (*) to indicate a incrementing integer" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "split.text", + "python_symbol": "wrangles.recipe_wrangles.split.text", + "signature": "(df: pandas.core.frame.DataFrame, input: str, output: Union[str, List] = None, char: str = ',', pad: bool = None, element: Union[int, str] = None, inclusive: bool = False, skip_empty: bool = False) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, List]", + "default": null + }, + { + "name": "char", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "," + }, + { + "name": "pad", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": null + }, + { + "name": "element", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[int, str]", + "default": null + }, + { + "name": "inclusive", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "skip_empty", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Split a string to multiple columns or a list.", + "additionalProperties": false, + "required": [ + "input" + ], + "properties": { + "input": { + "type": "string", + "description": "Name of the column to be split" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column(s)\nIf a single column is provided,\nthe results will be returned as a list\nIf multiple columns are listed,\nthe results will be separated into the columns.\nIf omitted, will overwrite the input." + }, + "char": { + "type": "string", + "description": "Set the character(s) to split on.\nDefault comma (,)\nCan also prefix with \"regex:\" to split on a pattern." + }, + "pad": { + "type": "boolean", + "description": "Choose whether to pad to ensure a consistent length. Default true if outputting to columns, false for lists." + }, + "element": { + "type": [ + "integer", + "string" + ], + "description": "Select a specific element or range after splitting using slicing syntax. e.g. 0, \":5\", \"5:\", \"2:8:2\"" + }, + "inclusive": { + "type": "boolean", + "description": "If true, include the split character in the output. Default False" + }, + "skip_empty": { + "type": "boolean", + "description": "Whether to skip empty values", + "default": false + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "split.tokenize", + "python_symbol": "wrangles.recipe_wrangles.split.tokenize", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, List], output: Union[str, List] = None, method: str = 'space', functions: dict = None) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, List]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, List]", + "default": null + }, + { + "name": "method", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "space" + } + ], + "internal_parameters": [ + "df", + "functions" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Split text into tokens. A variety of methods are available. The default method is to split on spaces.", + "additionalProperties": false, + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Column(s) to be split into tokens" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column" + }, + "method": { + "anyOf": [ + { + "type": "string", + "enum": [ + "space", + "boundary", + "boundary_ignore_space" + ], + "description": "Method to split the list. Options: space, boundary, boundary_ignore_space or use a custom function with custom. or use a regex pattern with regex:" + }, + { + "type": "string", + "description": "Method to split the list. Options: space, boundary, boundary_ignore_space or use a custom function with custom. or use a regex pattern with regex:" + } + ] + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "sql", + "python_symbol": "wrangles.recipe_wrangles.main.sql", + "signature": "(df: pandas.core.frame.DataFrame, command: str, params: Union[list, dict] = None, preserve_index: bool = False, preserve_data_types: bool = True) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "command", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "params", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[list, dict]", + "default": null + }, + { + "name": "preserve_index", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "preserve_data_types", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "overwrite_output", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Apply a SQL command to the current dataframe. Only SELECT statements are supported - the result will be the output.", + "additionalProperties": false, + "required": [ + "command" + ], + "properties": { + "command": { + "type": "string", + "description": "SQL Command. The table is called df. For specific SQL syntax, this uses the SQLite dialect." + }, + "params": { + "type": [ + "array", + "object" + ], + "description": "Variables to use in conjunctions with query.\nThis allows the query to be parameterized.\nThis uses sqlite syntax (? or :name)" + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "standardize", + "python_symbol": "wrangles.recipe_wrangles.main.standardize", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], model_id: Union[str, list], output: Union[str, list] = None, case_sensitive: bool = False, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "model_id", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "case_sensitive", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Standardize data using a DIY or bespoke standardization wrangle. Requires WrangleWorks Account and Subscription.", + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input columns." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of output columns" + }, + "model_id": { + "type": [ + "string", + "array" + ], + "description": "The ID of the wrangle to use (do not include 'find' and 'replace')" + }, + "case_sensitive": { + "type": "boolean", + "description": "Allows the wrangle to be case sensitive if set to True, default is False." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "standardize.clean", + "python_symbol": "wrangles.recipe_wrangles.standardize.clean", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, int, list] = None, fix_encoding: bool = True, unescape_html: Union[str, bool] = 'auto', normalization: str = 'NFC', fix_character_width: bool = True, uncurl_quotes: bool = True, remove_control_chars: bool = True, collapse_whitespace: bool = True, preserve_line_breaks: bool = False, trim: bool = True, separator: str = ' ', **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, int, list]", + "default": null + }, + { + "name": "fix_encoding", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + }, + { + "name": "unescape_html", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, bool]", + "default": "auto" + }, + { + "name": "normalization", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "NFC" + }, + { + "name": "fix_character_width", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + }, + { + "name": "uncurl_quotes", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + }, + { + "name": "remove_control_chars", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + }, + { + "name": "collapse_whitespace", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + }, + { + "name": "preserve_line_breaks", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + }, + { + "name": "trim", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": true + }, + { + "name": "separator", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": " " + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Repair common encoding, Unicode, HTML character reference, control character, and whitespace problems locally.", + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input columns." + }, + "output": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of output columns. Defaults to overwriting input." + }, + "fix_encoding": { + "type": "boolean", + "default": true, + "description": "Repair mojibake and other reversible encoding errors." + }, + "unescape_html": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "string", + "enum": [ + "auto" + ] + } + ], + "default": "auto", + "description": "Decode HTML character references. Auto avoids decoding text that appears to contain HTML markup." + }, + "normalization": { + "type": [ + "string", + "null" + ], + "enum": [ + "NFC", + "NFKC", + "NFD", + "NFKD", + null + ], + "default": "NFC", + "description": "Unicode normalization form." + }, + "fix_character_width": { + "type": "boolean", + "default": true, + "description": "Normalize fullwidth and halfwidth characters." + }, + "uncurl_quotes": { + "type": "boolean", + "default": true, + "description": "Replace typographic quotes with straight quotes." + }, + "remove_control_chars": { + "type": "boolean", + "default": true, + "description": "Remove C0 and C1 control characters." + }, + "collapse_whitespace": { + "type": "boolean", + "default": true, + "description": "Collapse runs of Unicode whitespace." + }, + "preserve_line_breaks": { + "type": "boolean", + "default": false, + "description": "Preserve line breaks while collapsing other whitespace." + }, + "trim": { + "type": "boolean", + "default": true, + "description": "Remove leading and trailing whitespace." + }, + "separator": { + "type": "string", + "default": " ", + "description": "Text used to join multiple input columns into one output." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "standardize.custom", + "python_symbol": "wrangles.recipe_wrangles.standardize.custom", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], model_id: Union[str, list], output: Union[str, list] = None, case_sensitive: bool = False, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "model_id", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": false, + "annotation": "Union[str, list]", + "default": null + }, + { + "name": "case_sensitive", + "kind": "positional_or_keyword", + "required": false, + "annotation": "bool", + "default": false + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Standardize data using a DIY or bespoke standardization wrangle. Requires WrangleWorks Account and Subscription.", + "required": [ + "input" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input columns." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of output columns" + }, + "model_id": { + "type": [ + "string", + "array" + ], + "description": "The ID of the wrangle to use (do not include 'find' and 'replace')" + }, + "case_sensitive": { + "type": "boolean", + "description": "Allows the wrangle to be case sensitive if set to True, default is False." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "translate", + "python_symbol": "wrangles.recipe_wrangles.main.translate", + "signature": "(df: pandas.core.frame.DataFrame, input: Union[str, int, list], output: Union[str, list], target_language: str, source_language: str = 'AUTO', case: str = None, **kwargs) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "input", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, int, list]" + }, + { + "name": "output", + "kind": "positional_or_keyword", + "required": true, + "annotation": "Union[str, list]" + }, + { + "name": "target_language", + "kind": "positional_or_keyword", + "required": true, + "annotation": "str" + }, + { + "name": "source_language", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": "AUTO" + }, + { + "name": "case", + "kind": "positional_or_keyword", + "required": false, + "annotation": "str", + "default": null + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Translate the input to a different language. Requires WrangleWorks Account and DeepL API Key (A free account for up to 500,000 characters per month is available).", + "additionalProperties": false, + "required": [ + "input", + "output", + "target_language" + ], + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the column to translate" + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column" + }, + "target_language": { + "type": "string", + "description": "Code of the language to translate to", + "enum": [ + "Bulgarian", + "Chinese", + "Czech", + "Danish", + "Dutch", + "English (American)", + "English (British)", + "Estonian", + "Finnish", + "French", + "German", + "Greek", + "Hungarian", + "Italian", + "Japanese", + "Latvian", + "Lithuanian", + "Polish", + "Portuguese", + "Portuguese (Brazilian)", + "Romanian", + "Russian", + "Slovak", + "Slovenian", + "Spanish", + "Swedish" + ] + }, + "source_language": { + "type": "string", + "description": "Code of the language to translate from. If omitted, automatically detects the input language", + "enum": [ + "Auto", + "Bulgarian", + "Chinese", + "Czech", + "Danish", + "Dutch", + "English", + "Estonian", + "Finnish", + "French", + "German", + "Greek", + "Hungarian", + "Italian", + "Japanese", + "Latvian", + "Lithuanian", + "Polish", + "Portuguese", + "Romanian", + "Russian", + "Slovak", + "Slovenian", + "Spanish", + "Swedish" + ] + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "transpose", + "python_symbol": "wrangles.recipe_wrangles.pandas.transpose", + "signature": "(df: pandas.core.frame.DataFrame, header_column=0) -> pandas.core.frame.DataFrame", + "parameters": [ + { + "name": "header_column", + "kind": "positional_or_keyword", + "required": false, + "default": 0 + } + ], + "internal_parameters": [ + "df" + ], + "variadic": { + "positional": null, + "keyword": null + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "overwrite_output", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Transpose the DataFrame (swap columns to rows)", + "additionalProperties": false, + "properties": { + "header_column": { + "type": [ + "string", + "integer", + null + ], + "description": "Name or position of the column that will be used as the column headings for the transposed DataFrame. Default 0 (first column). Use header_column = null to not use any column as header." + } + } + }, + "plain_docstring": null + }, + { + "runtime_key": "try", + "python_symbol": "wrangles.recipe_wrangles.main.Try", + "signature": "(df: pandas.core.frame.DataFrame, wrangles: list, functions: Union[function, list, dict] = None, variables: dict = None, retries: int = 0, **kwargs)", + "parameters": [ + { + "name": "wrangles", + "kind": "positional_or_keyword", + "required": true, + "annotation": "list" + }, + { + "name": "retries", + "kind": "positional_or_keyword", + "required": false, + "annotation": "int", + "default": 0 + } + ], + "internal_parameters": [ + "df", + "functions", + "variables" + ], + "variadic": { + "positional": null, + "keyword": "kwargs" + }, + "capabilities": { + "if": true, + "where": true, + "where_params": true + }, + "where_mode": "filter", + "docstring_schema_status": "available", + "docstring_schema": { + "type": "object", + "description": "Try a list of wrangles and catch any errors that occur", + "required": [ + "wrangles" + ], + "properties": { + "wrangles": { + "type": "array", + "description": "List of wrangles to apply", + "minItems": 1, + "items": { + "$ref": "#/$defs/wrangles/items" + } + }, + "except": { + "type": [ + "object" + ], + "description": "An action to take if the wrangles encounter an error.\nThis can contain a list of wrangles or a dictionary of column names and values.\nIf except is not provided, the error will be logged and the recipe will continue.", + "minItems": 1, + "items": { + "$ref": "#/$defs/wrangles/items" + } + }, + "retries": { + "type": "integer", + "description": "Number of times to retry the wrangles if an error occurs. Default 0.", + "minimum": 0 + } + } + }, + "plain_docstring": null + } + ] +} diff --git a/wrangles-docs/static/registry/schema/wrangle-entry.schema.json b/wrangles-docs/static/registry/schema/wrangle-entry.schema.json new file mode 100644 index 0000000..9ded481 --- /dev/null +++ b/wrangles-docs/static/registry/schema/wrangle-entry.schema.json @@ -0,0 +1,280 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://docs.wrangles.com/registry/schema/wrangle-entry.schema.json", + "title": "Wrangles Registry entry", + "type": "object", + "additionalProperties": false, + "required": [ + "schema_version", + "type", + "id", + "wrangle_name", + "namespace", + "title", + "description", + "wrangle_key", + "aliases", + "slug", + "status", + "visibility", + "tags", + "runtime", + "access", + "capabilities", + "parameters", + "examples", + "sources" + ], + "properties": { + "schema_version": { + "const": "0.1" + }, + "type": { + "const": "wrangle" + }, + "id": { + "type": [ + "string", + "null" + ], + "format": "uuid", + "description": "Canonical UUID allocated by the Wrangles catalog database. Null is allowed only while an existing wrangle awaits database identity reconciliation." + }, + "wrangle_name": { + "type": "string", + "pattern": "^[a-z][a-z0-9_]*$" + }, + "namespace": { + "type": [ + "string", + "null" + ], + "pattern": "^[a-z][a-z0-9_]*$", + "description": "Executable prefix of a dotted recipe key, or null for a current root-level runtime key." + }, + "title": { + "type": "string", + "minLength": 1 + }, + "description": { + "type": "string", + "minLength": 1 + }, + "wrangle_key": { + "type": "string", + "pattern": "^[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)*$" + }, + "aliases": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "pattern": "^[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)*$" + } + }, + "slug": { + "type": "string", + "pattern": "^[a-z0-9]+(?:[a-z0-9_-]*[a-z0-9])?(?:/[a-z0-9]+(?:[a-z0-9_-]*[a-z0-9])?)*$" + }, + "status": { + "enum": [ + "draft", + "active", + "deprecated", + "removed" + ] + }, + "visibility": { + "enum": [ + "public", + "internal" + ] + }, + "tags": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "type": "string", + "minLength": 1 + } + }, + "runtime": { + "type": "object", + "additionalProperties": false, + "required": [ + "package", + "symbol", + "contract_status" + ], + "properties": { + "package": { + "type": "string", + "minLength": 1 + }, + "symbol": { + "type": "string", + "minLength": 1 + }, + "contract_status": { + "enum": [ + "awaiting-manifest", + "verified" + ] + } + } + }, + "access": { + "type": "object", + "additionalProperties": false, + "required": [ + "ai_powered", + "requires_account", + "requires_subscription", + "requires_external_api_key" + ], + "properties": { + "ai_powered": { + "type": "boolean" + }, + "requires_account": { + "type": "boolean" + }, + "requires_subscription": { + "type": "boolean" + }, + "requires_external_api_key": { + "type": "boolean" + } + } + }, + "capabilities": { + "type": "object", + "additionalProperties": { + "type": "boolean" + } + }, + "parameters": { + "type": "array", + "items": { + "$ref": "#/$defs/parameter" + } + }, + "examples": { + "type": "array", + "items": { + "$ref": "#/$defs/example" + } + }, + "sources": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/$defs/source" + } + } + }, + "$defs": { + "parameter": { + "type": "object", + "additionalProperties": false, + "required": [ + "name", + "description", + "required", + "role", + "schema" + ], + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "name_pattern": { + "type": "string", + "minLength": 1, + "description": "JSON Schema regular expression for a documented family of dynamic keyword names." + }, + "description": { + "type": "string", + "minLength": 1 + }, + "required": { + "type": "boolean" + }, + "role": { + "type": "string", + "minLength": 1 + }, + "runtime_default": {}, + "schema": { + "type": "object", + "minProperties": 1 + } + } + }, + "example": { + "type": "object", + "additionalProperties": false, + "required": [ + "id", + "title", + "recipe", + "input_fixture", + "output_fixture", + "verification" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$" + }, + "title": { + "type": "string", + "minLength": 1 + }, + "recipe": { + "type": "string", + "minLength": 1 + }, + "input_fixture": { + "type": "string", + "minLength": 1 + }, + "output_fixture": { + "type": "string", + "minLength": 1 + }, + "verification": { + "enum": [ + "static", + "offline", + "live", + "manual" + ] + } + } + }, + "source": { + "type": "object", + "additionalProperties": false, + "required": [ + "id", + "resource" + ], + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "resource": { + "type": "string", + "minLength": 1 + }, + "title": { + "type": "string" + } + } + } + } +} diff --git a/wrangles-docs/static/registry/schema/wrangles-runtime-manifest.schema.json b/wrangles-docs/static/registry/schema/wrangles-runtime-manifest.schema.json new file mode 100644 index 0000000..384dc45 --- /dev/null +++ b/wrangles-docs/static/registry/schema/wrangles-runtime-manifest.schema.json @@ -0,0 +1,199 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://docs.wrangles.com/registry/schema/wrangles-runtime-manifest.schema.json", + "title": "WranglesPY recipe-wrangle runtime manifest", + "type": "object", + "additionalProperties": false, + "required": [ + "$schema", + "format", + "format_version", + "source", + "entry_count", + "wrangles" + ], + "properties": { + "$schema": { + "type": "string", + "format": "uri" + }, + "format": { + "const": "wrangles-runtime-manifest" + }, + "format_version": { + "const": "0.1" + }, + "source": { + "type": "object", + "additionalProperties": false, + "required": [ + "repository", + "revision" + ], + "properties": { + "repository": { + "type": "string", + "format": "uri" + }, + "revision": { + "type": "string", + "minLength": 1 + } + } + }, + "entry_count": { + "type": "integer", + "minimum": 0 + }, + "wrangles": { + "type": "array", + "items": { + "$ref": "#/$defs/wrangle" + } + } + }, + "$defs": { + "wrangle": { + "type": "object", + "additionalProperties": false, + "required": [ + "runtime_key", + "python_symbol", + "signature", + "parameters", + "internal_parameters", + "variadic", + "capabilities", + "where_mode", + "docstring_schema_status", + "docstring_schema", + "plain_docstring" + ], + "properties": { + "runtime_key": { + "type": "string", + "pattern": "^[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)*$" + }, + "python_symbol": { + "type": "string", + "minLength": 1 + }, + "signature": { + "type": "string", + "minLength": 1 + }, + "parameters": { + "type": "array", + "items": { + "$ref": "#/$defs/parameter" + } + }, + "internal_parameters": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "minLength": 1 + } + }, + "variadic": { + "type": "object", + "additionalProperties": false, + "required": [ + "positional", + "keyword" + ], + "properties": { + "positional": { + "type": [ + "string", + "null" + ] + }, + "keyword": { + "type": [ + "string", + "null" + ] + } + } + }, + "capabilities": { + "type": "object", + "additionalProperties": false, + "required": [ + "if", + "where", + "where_params" + ], + "properties": { + "if": { + "type": "boolean" + }, + "where": { + "type": "boolean" + }, + "where_params": { + "type": "boolean" + } + } + }, + "where_mode": { + "enum": [ + "filter", + "overwrite_output", + "unsupported" + ] + }, + "docstring_schema_status": { + "enum": [ + "available", + "missing" + ] + }, + "docstring_schema": { + "type": [ + "object", + "null" + ] + }, + "plain_docstring": { + "type": [ + "string", + "null" + ] + } + } + }, + "parameter": { + "type": "object", + "additionalProperties": false, + "required": [ + "name", + "kind", + "required" + ], + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "kind": { + "enum": [ + "positional_only", + "positional_or_keyword", + "keyword_only" + ] + }, + "required": { + "type": "boolean" + }, + "annotation": { + "type": "string", + "minLength": 1 + }, + "default": {} + } + } + } +} diff --git a/wrangles-docs/static/registry/wrangles/_root/accordion.md b/wrangles-docs/static/registry/wrangles/_root/accordion.md new file mode 100644 index 0000000..73e57e8 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/_root/accordion.md @@ -0,0 +1,133 @@ +--- +schema_version: '0.1' +type: wrangle +id: null +wrangle_name: accordion +namespace: null +title: Accordion +description: >- + Apply a series of wrangles to column(s) containing lists. The wrangles will be applied to each + element in the list and the results will be returned back as a list. +wrangle_key: accordion +aliases: [] +slug: accordion +status: active +visibility: public +tags: + - utility + - accordion +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.accordion + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: wrangles + description: List of wrangles to apply. + required: true + role: nested-wrangles + schema: + type: array + minItems: 1 + items: + $ref: '#/$defs/wrangles/items' + - name: input + description: The column(s) containing the list(s) that the wrangles will be applied to the elements of. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Output of the wrangles to save back to the dataframe. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: propagate + description: >- + Limit the column(s) that will be available to the wrangles and replicated for each element. If + not specified, all columns will be propogated. This may be useful to limit the memory use for + large datasets. + required: false + role: option + runtime_default: null + schema: + type: + - string + - array + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY accordion implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/utility/_sources/accordion.md + title: Existing accordion Markdown +--- + +# Accordion + +Apply a series of wrangles to the individual elements of one or more lists. + +## Migrated examples +#### Apply Convert Case to List Elements + +This example applies `convert.case` to each string in a list, where the wrangle would not normally operate on the list as a whole. + +##### Recipe + +```yaml +wrangles: + - accordion: + input: list_column + output: modified_lists + wrangles: + - convert.case: + input: list_column + output: modified_lists + case: upper +``` + +
+ +
+ +##### Input Sample + +| list_column | +| --- | +| ["a", "b", "c"] | +| ["e", "f", "g"] | + +
+ +
+ +##### Output Sample + +| list_column | modified_lists | +| --- | --- | +| ["a", "b", "c"] | ["A", "B", "C"] | +| ["e", "f", "g"] | ["E", "F", "G"] | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/_root/batch.md b/wrangles-docs/static/registry/wrangles/_root/batch.md new file mode 100644 index 0000000..f17bbec --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/_root/batch.md @@ -0,0 +1,151 @@ +--- +schema_version: '0.1' +type: wrangle +id: null +wrangle_name: batch +namespace: null +title: Batch +description: >- + Split the data into batches for executing a list of wrangles. Use this in situations such as where + the intermediate data is too large to fit in memory. +wrangle_key: batch +aliases: [] +slug: batch +status: active +visibility: public +tags: + - utility + - batch +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.batch + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: wrangles + description: >- + The wrangles to execute on the data. Each series of wrangles will be run against the data in + batches of the size defined by batch_size. + required: true + role: nested-wrangles + schema: + type: array + minItems: 1 + items: + $ref: '#/$defs/wrangles/items' + - name: batch_size + description: The number of rows to split each batch into. + required: false + role: option + runtime_default: 1000 + schema: + type: integer + - name: threads + description: The number of threads to use for parallel processing. Default 1. + required: false + role: option + runtime_default: 1 + schema: + type: integer + - name: on_error + description: >- + A dictionary of column_name: value to return if an error occurs while attempting to run a + batch. + required: false + role: fallback-value + runtime_default: null + schema: + type: + - object + - 'null' + - name: timeout + description: The number of seconds to wait for a batch to complete before raising an error. + required: false + role: option + runtime_default: null + schema: + type: + - number + - 'null' + - name: use_multiprocessing + description: Use process-based workers instead of threads. This is an advanced runtime option. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY batch implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/utility/_sources/batch.md + title: Existing batch Markdown +--- + +# Batch + +Execute a series of wrangles in batches. Batches can run in parallel with `threads` and can provide fallback output when an error occurs. + +## Migrated examples +#### Batch an Extract AI Wrangle + +This example processes product descriptions in batches of two rows. + +##### Recipe + +```yaml +wrangles: + - batch: + batch_size: 2 + threads: 1 + wrangles: + - extract.ai: + api_key: Your OpenAI API key + input: Product Description + output: + Title: + type: string + description: Title of the product +``` + +
+ +
+ +##### Input Sample + +| Product Description | +| --- | +| Sleep better with our Memory Foam Pillow, designed to contour to your head and neck. | +| Stay comfortable and stylish with our Organic Cotton T-Shirt, made from soft, breathable fabric. | +| Keep drinks hot or cold with our Stainless Steel Water Bottle, featuring durable insulation. | +| Enjoy crisp sound and long battery life with our Wireless Bluetooth Earbuds. | + +
+ +
+ +##### Output Sample + +| Product Description | Title | +| --- | --- | +| Sleep better with our Memory Foam Pillow, designed to contour to your head and neck. | Memory Foam Pillow | +| Stay comfortable and stylish with our Organic Cotton T-Shirt, made from soft, breathable fabric. | Organic Cotton T-Shirt | +| Keep drinks hot or cold with our Stainless Steel Water Bottle, featuring durable insulation. | Stainless Steel Water Bottle | +| Enjoy crisp sound and long battery life with our Wireless Bluetooth Earbuds. | Wireless Bluetooth Earbuds | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/_root/classify.md b/wrangles-docs/static/registry/wrangles/_root/classify.md new file mode 100644 index 0000000..9dffa3c --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/_root/classify.md @@ -0,0 +1,114 @@ +--- +schema_version: '0.1' +type: wrangle +id: 06669ef8-cdd1-42f7-8078-98e0b7a42c30 +wrangle_name: classify +namespace: null +title: Classify +description: Run classify wrangles on the specified columns. Requires WrangleWorks Account and Subscription. +wrangle_key: classify +aliases: [] +slug: classify +status: active +visibility: public +tags: + - ai + - classify +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.classify + contract_status: verified +access: + ai_powered: false + requires_account: true + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output column. + required: true + role: column-output + schema: + type: + - string + - array + - name: model_id + description: ID of the classification model to be used. + required: true + role: model-reference + schema: + type: string + - name: include_confidence + description: For models that support it, include the confidence level in the output. + required: false + role: option + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY classify implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/ai/_sources/classify.md + title: Existing classify Markdown +--- + +# Classify + +Run a custom classification wrangle on the specified column or columns. A classification wrangle must be trained first. + +## Migrated examples +#### Food Type Example + +##### Recipe + +```yaml +wrangles: + - classify: + input: Products + output: Category + model_id: ${model_id} + where: Products = Milk +``` + +
+ +
+ +##### Input Sample + +| Products | +| --- | +| Rice | +| Milk | + +
+ +
+ +##### Output Sample + +| Products | Category | +| --- | --- | +| Rice | | +| Milk | Dairy | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/_root/clean-whitespaces.md b/wrangles-docs/static/registry/wrangles/_root/clean-whitespaces.md new file mode 100644 index 0000000..5be4c43 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/_root/clean-whitespaces.md @@ -0,0 +1,117 @@ +--- +schema_version: '0.1' +type: wrangle +id: e36e15c4-f0ad-43f8-8555-ef683a8ab892 +wrangle_name: clean_whitespaces +namespace: null +title: Clean Whitespaces +description: >- + Condense multiple spaces to a single space and convert special space characters to a standard + space. +wrangle_key: clean_whitespaces +aliases: [] +slug: clean-whitespaces +status: active +visibility: public +tags: + - format + - clean-whitespaces +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.clean_whitespaces + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name or list of input columns. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name or list of output columns. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: trim + description: Whether to trim leading and trailing spaces. Default True. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: remove_literals + description: Whether to remove special space characters such as new lines etc. Default True. + required: false + role: option + runtime_default: true + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY clean_whitespaces implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/clean-whitespaces.md + title: Existing clean_whitespaces Markdown +--- + +# Clean Whitespaces + +Condense multiple spaces to a single space and convert special space characters to a standard space. + +## Migrated examples +#### Food Type Example + +##### Recipe + +```yaml +wrangles: + - clean_whitespaces: + input: Products +``` + +
+ +
+ +##### Input Sample + +| Products | +| --- | +| `Hello world!` | +| `Hello universe!` | + +
+ +
+ +##### Output Sample + +| Products | +| --- | +| Hello world! | +| Hello universe! | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/_root/concurrent.md b/wrangles-docs/static/registry/wrangles/_root/concurrent.md new file mode 100644 index 0000000..05a1f18 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/_root/concurrent.md @@ -0,0 +1,119 @@ +--- +schema_version: '0.1' +type: wrangle +id: null +wrangle_name: concurrent +namespace: null +title: Concurrent +description: >- + Run multiple wrangles concurrently rather than sequentially. Wrangles must specify output columns + to be used concurrently. When using concurrent, Wrangles may not complete in a predictable order + and it is not recommended to update overlapping columns with different wrangles. +wrangle_key: concurrent +aliases: [] +slug: concurrent +status: active +visibility: public +tags: + - utility + - concurrent +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.concurrent + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: wrangles + description: The wrangles section of a recipe to execute for each combination of variables. + required: true + role: nested-wrangles + schema: + type: array + minItems: 1 + items: + $ref: '#/$defs/wrangles/items' + - name: max_concurrency + description: The maximum number of wrangles to execute in parallel. + required: false + role: option + runtime_default: 10 + schema: + type: integer + minimum: 1 + - name: use_multiprocessing + description: Use process-based workers instead of threads. This is an advanced runtime option. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY concurrent implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/utility/_sources/concurrent.md + title: Existing concurrent Markdown +--- + +# Concurrent + +Run multiple wrangles concurrently instead of sequentially. Concurrent wrangles must declare output columns, may finish in any order, and should not update overlapping columns. + +See the [Concurrent connector](/python/connectors/concurrent) for the connector equivalent. + +## Migrated examples +#### Run Extraction Wrangles Concurrently + +##### Recipe + +```yaml +wrangles: + - concurrent: + wrangles: + - extract.codes: + input: Products + output: Part Codes + - extract.attributes: + input: Products + output: Attributes +``` + +
+ +
+ +##### Input Sample + +| Products | +| --- | +| SKF ball brg 2" od 6202 | +| brg seal 1" id 5493 | +| 3lb hammer 87102 | + +
+ +
+ +##### Output Sample + +| Products | Part Codes | Attributes | +| --- | --- | --- | +| SKF ball brg 2" od 6202 | 6202 | `{"length":["2in"]}` | +| brg seal 1" id 5493 | 5493 | `{"length":["1in"]}` | +| 3lb hammer 87102 | 87102 | `{"weight":["3lb"]}` | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/_root/copy.md b/wrangles-docs/static/registry/wrangles/_root/copy.md new file mode 100644 index 0000000..f9d8764 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/_root/copy.md @@ -0,0 +1,140 @@ +--- +schema_version: '0.1' +type: wrangle +id: b002fbdc-92c0-4347-889d-0f4bfeec99fa +wrangle_name: copy +namespace: null +title: Copy +description: Make a copy of a column or a list of columns. +wrangle_key: copy +aliases: [] +slug: copy +status: active +visibility: public +tags: + - transform + - copy +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.pandas.copy + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input columns or columns. + required: false + role: column-selector + runtime_default: null + schema: + type: + - string + - integer + - array + - 'null' + - name: output + description: Name of the output columns or columns. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/pandas.py + title: WranglesPY copy implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/transform/_sources/copy.md + title: Existing copy Markdown +--- + +# Copy + +Create a copy of columns in a dataframe. + +## Migrated examples +#### Copying a Column With Input and Output + +##### Recipe + +```yaml +wrangles: + - copy: + input: Product Data + output: Product Data (copy) +``` + +
+ +
+ +##### Input Sample + +| Product Data | +| --- | +| SKF ball brg | +| brg seal | + +
+ +
+ +##### Output Sample + +| Product Data | Product Data (copy) | +| --- | --- | +| SKF ball bearing | SKF ball bearing | +| bearing seal | bearing seal | + +
+ +
+ +#### Copying a Column Express as a Dictionary + +##### Recipe + +```yaml +wrangles: + - copy: + Product Data: Product Data (copy) +``` + +
+ +
+ +##### Input Sample + +| Product Data | +| --- | +| SKF ball brg | +| brg seal | + +
+ +
+ +##### Output Sample + +| Product Data | Product Data (copy) | +| --- | --- | +| SKF ball bearing | SKF ball bearing | +| bearing seal | bearing seal | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/_root/date-calculator.md b/wrangles-docs/static/registry/wrangles/_root/date-calculator.md new file mode 100644 index 0000000..d0d7987 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/_root/date-calculator.md @@ -0,0 +1,136 @@ +--- +schema_version: '0.1' +type: wrangle +id: 19cfeb4f-02af-4ab2-895c-0ff2bb5cce19 +wrangle_name: date_calculator +namespace: null +title: Date Calculator +description: Add or Subtract time from a date. +wrangle_key: date_calculator +aliases: [] +slug: date-calculator +status: active +visibility: public +tags: + - date + - date-calculator +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.date_calculator + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the dates column. + required: true + role: column-selector + schema: + type: string + - name: operation + description: Date operation. + required: false + role: option + runtime_default: add + schema: + type: string + enum: + - add + - subtract + - name: output + description: Name of the output column of dates. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - 'null' + - name: time_unit + description: Time unit for operation. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + enum: + - years + - months + - weeks + - days + - hours + - minutes + - seconds + - milliseconds + - name: time_value + description: Time unit value for operation. + required: false + role: option + runtime_default: null + schema: + type: + - number + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY date_calculator implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/date/_sources/date-calculator.md + title: Existing date_calculator Markdown +--- + +# Date Calculator + +Add or subtract time from a date. + +## Migrated examples +#### Calculating a Future Date + +##### Recipe + +```yaml +wrangles: + - date_calculator: + input: Date + output: New Date + operation: subtract # Optional default is addition + time_unit: days + time_value: 1 +``` + +
+ +
+ +##### Input Sample + +| Date | +| --- | +| 2022-12-26 | + +
+ +
+ +##### Output Sample + +| New Date | +| --- | +| 2022-12-25 | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/_root/drop.md b/wrangles-docs/static/registry/wrangles/_root/drop.md new file mode 100644 index 0000000..f27d9ec --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/_root/drop.md @@ -0,0 +1,91 @@ +--- +schema_version: '0.1' +type: wrangle +id: 363bffbf-397e-4975-8382-e9efa5e9eed6 +wrangle_name: drop +namespace: null +title: Drop +description: Drop (Delete) selected column(s). +wrangle_key: drop +aliases: [] +slug: drop +status: active +visibility: public +tags: + - select + - drop +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.pandas.drop + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: false + where_params: false +parameters: + - name: columns + description: Name of the column(s) to drop. + required: true + role: option + schema: + type: + - string + - array +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/pandas.py + title: WranglesPY drop implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/drop.md + title: Existing drop Markdown +--- + +# Drop + +Drop (Delete) selected column(s) + +## Migrated examples +#### Dropping a Column + +##### Recipe + +```yaml +wrangles: + - drop: + columns: + - Material +``` + +
+ +
+ +##### Input Sample + +| Material | Product Data | +| --- | --- | +| Ceramic | SKF ball brg | +| Rubber | brg seal | + +
+ +
+ +##### Output Sample + +| Product Data | +| --- | +| SKF ball bearing | +| bearing seal | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/_root/explode.md b/wrangles-docs/static/registry/wrangles/_root/explode.md new file mode 100644 index 0000000..f743d1c --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/_root/explode.md @@ -0,0 +1,114 @@ +--- +schema_version: '0.1' +type: wrangle +id: 4e4b13ac-8d50-4b2c-85c8-2c31de1e817d +wrangle_name: explode +namespace: null +title: Explode +description: Explode a column of lists into rows. +wrangle_key: explode +aliases: [] +slug: explode +status: active +visibility: public +tags: + - split + - explode +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.pandas.explode + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: >- + Name of the column(s) to explode. If multiple columns are included they must contain lists of + the same length. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: reset_index + description: Reset the index after exploding. Default True. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: drop_empty + description: >- + If true, any rows that contain an empty list will be dropped. If false, rows that contain + empty lists will keep 1 row with an empty value. Default False. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/pandas.py + title: WranglesPY explode implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/split/_sources/explode.md + title: Existing explode Markdown +--- + +# Explode + +Explode a column of lists into rows + +## Migrated examples +#### Exploding a Column + +##### Recipe + +```yaml +wrangles: + - explode: + input: Products +``` + +
+ +
+ +##### Input Sample + +| Products | Manufacturer | +| --- | --- | +| [Ball Bearing, Bearing Seal] | SKF | +| [Angle Grinder, Drill, Impact Driver] | Milwaukee | +| Solid State Relay | Schneider | + +
+ +
+ +##### Output Sample + +| Products | Manufacturer | +| --- | --- | +| Ball Bearing | SKF | +| Bearing Seal | SKF | +| Angle Grinder | Milwaukee | +| Drill | Milwaukee | +| Impact Driver | Milwaukee | +| Solid State Relay | Schneider | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/_root/filter.md b/wrangles-docs/static/registry/wrangles/_root/filter.md new file mode 100644 index 0000000..453b311 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/_root/filter.md @@ -0,0 +1,221 @@ +--- +schema_version: '0.1' +type: wrangle +id: e3242acf-d204-433f-8373-205b77481131 +wrangle_name: filter +namespace: null +title: Filter +description: >- + Filter the dataframe based on the contents. If multiple filters are specified, all must be + correct. For complex filters, use the where parameter. +wrangle_key: filter +aliases: [] +slug: filter +status: active +visibility: public +tags: + - select + - filter +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.filter + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the column to filter on. If multiple are provided, all must match the criteria. + required: false + role: column-selector + runtime_default: [] + schema: + type: + - string + - integer + - array + - name: equal + description: Select rows where the values equal a given value. + required: false + role: option + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: not_equal + description: Select rows where the values do not equal a given value. + required: false + role: option + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: is_in + description: Select rows where the values are in a given list. + required: false + role: option + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: not_in + description: Select rows where the values are not in a given list. + required: false + role: option + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: greater_than + description: >- + Select rows where the values are greater than a specified value. Does include the value + itself. + required: false + role: option + runtime_default: null + schema: + type: + - integer + - number + - 'null' + - name: greater_than_equal_to + description: >- + Select rows where the values are greater than a specified value. Does include the value + itself. + required: false + role: option + runtime_default: null + schema: + type: + - integer + - number + - 'null' + - name: less_than + description: >- + Select rows where the values are less than a specified value. Does not include the value + itself. + required: false + role: option + runtime_default: null + schema: + type: + - integer + - number + - 'null' + - name: less_than_equal_to + description: Select rows where the values are less than a specified value. Does include the value itself. + required: false + role: option + runtime_default: null + schema: + type: + - integer + - number + - 'null' + - name: between + description: Value or list of values to filter that are in between two parameter values. + required: false + role: option + runtime_default: null + schema: + type: + - array + - 'null' + - name: contains + description: Select rows where the input contains the value. Allows regular expressions. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + - name: not_contains + description: Select rows where the input does not contain the value. Allows regular expressions. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + - name: is_null + description: If true, select all rows where the value is NULL. If false, where is not NULL. + required: false + role: option + runtime_default: null + schema: + type: + - boolean + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY filter implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/filter.md + title: Existing filter Markdown +--- + +# Filter + +Filter the dataframe based on the contents. + +## Migrated examples +#### Filtering a Column + +##### Recipe + +```yaml +wrangles: + # Select only red fruits + - filter: + input: Color + equal: + - red +``` + +
+ +
+ +##### Input Sample + +| Color | Fruit | +| --- | --- | +| red | Apple | +| green | Apple | +| orange | Orange | +| red | Strawberry | + +
+ +
+ +##### Output Sample + +| Color | Fruit | +| --- | --- | +| red | Apple | +| red | Strawberry | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/_root/huggingface.md b/wrangles-docs/static/registry/wrangles/_root/huggingface.md new file mode 100644 index 0000000..f684cc6 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/_root/huggingface.md @@ -0,0 +1,129 @@ +--- +schema_version: '0.1' +type: wrangle +id: ae12cf20-4934-428f-84a9-a6898cb7ffe0 +wrangle_name: huggingface +namespace: null +title: Huggingface +description: Use a model from huggingface. +wrangle_key: huggingface +aliases: [] +slug: huggingface +status: active +visibility: public +tags: + - ai + - huggingface +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.huggingface + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: api_token + description: Huggingface API Token. + required: true + role: option + schema: + type: string + - name: model + description: Name of the model to use. e.g. facebook/bart-large-cnn. + required: true + role: option + schema: + type: string + - name: output + description: Name of the output column. If not provided, will overwrite the input column. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: parameters + description: Optionally, provide additional parameters to define the model behaviour. + required: false + role: option + runtime_default: null + schema: + type: + - object + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY huggingface implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/ai/_sources/huggingface.md + title: Existing huggingface Markdown +--- + +# Huggingface + +Use a model from huggingface + +## Migrated examples +#### Summarize Product Descriptions + +This template uses a Hugging Face summarization model. The exact response shape and text depend on the selected model. + +##### Recipe + +```yaml +wrangles: + - huggingface: + input: + - Product Description + output: + - Summary + api_token: Your Hugging Face API token + model: facebook/bart-large-cnn +``` + +
+ +
+ +##### Input Sample + +| Product Description | +| --- | +| A cordless drill with two batteries, a charger, and a compact carrying case. | + +
+ +
+ +##### Output Sample + +| Product Description | Summary | +| --- | --- | +| A cordless drill with two batteries, a charger, and a compact carrying case. | Cordless drill kit with batteries, charger, and case. | + +
+ +
+ +_Template based on the documented parameters; no published source example is currently available._ diff --git a/wrangles-docs/static/registry/wrangles/_root/log.md b/wrangles-docs/static/registry/wrangles/_root/log.md new file mode 100644 index 0000000..de9c3af --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/_root/log.md @@ -0,0 +1,207 @@ +--- +schema_version: '0.1' +type: wrangle +id: 6177808e-aa2d-4d0b-8385-858b16948a5d +wrangle_name: log +namespace: null +title: Log +description: Log the current status of the dataframe. +wrangle_key: log +aliases: [] +slug: log +status: active +visibility: public +tags: + - utility + - log +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.log + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: columns + description: (Optional, default all columns) List of specific columns to log. + required: false + role: option + runtime_default: null + schema: + type: + - array + - 'null' + - name: write + description: (Optional) Allows for an intermediate output to a file/dataframe/database etc. + required: false + role: option + runtime_default: null + schema: + type: + - array + - 'null' + minItems: 1 + items: + $ref: '#/$defs/write/items' + - name: warning + description: Log a warning to the console. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + - name: info + description: Log info to the console. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + - name: log_data + description: >- + Whether to log a sample of the contents of the dataframe. Default True if not logging to a + write, error, warning or info. Default False otherwise. + required: false + role: option + runtime_default: null + schema: + type: + - boolean + - 'null' + - name: error + description: Log an error to the console. + required: false + role: option + schema: + type: string +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY log implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/utility/_sources/log.md + title: Existing log Markdown +--- + +# Log + +Print the current status of the dataframe. Only a sample of rows is logged. + +## Migrated examples +#### Logging All Columns to Terminal + +##### Recipe + +```yaml +wrangles: + - log: {} +``` + +
+ +
+ +##### Input Sample + +_Logging side-effect; no tabular input sample._ + +
+ +
+ +##### Output Sample + +_Logs a sample of rows or status information to the configured destination._ + +
+ +
+ +#### Logging Specific Columns to Terminal + +##### Recipe + +```yaml +wrangles: + - log: + columns: + - column1 + - column2 +``` + +
+ +
+ +##### Input Sample + +_Logging side-effect; no tabular input sample._ + +
+ +
+ +##### Output Sample + +_Logs a sample of rows or status information to the configured destination._ + +
+ +
+ +#### Logging to a File + +##### Recipe + +```yaml +wrangles: + - log: + write: + - file: + name: output/filepath + columns: + - column 1 + - column 2 +``` + +
+ +
+ +##### Input Sample + +_Logging side-effect; no tabular input sample._ + +
+ +
+ +##### Output Sample + +_Logs a sample of rows or status information to the configured destination._ + +
+ +
+ +#### Native Variables + +| Variable | Function | +| --- | --- | +| `${column_count}` | Number of columns. | +| `${columns}` | List of all columns. | +| `${df}` | Current dataframe. | +| `${row_count}` | Number of visible rows processed in each batch. | diff --git a/wrangles-docs/static/registry/wrangles/_root/lookup.md b/wrangles-docs/static/registry/wrangles/_root/lookup.md new file mode 100644 index 0000000..d219a3d --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/_root/lookup.md @@ -0,0 +1,140 @@ +--- +schema_version: '0.1' +type: wrangle +id: b3339193-d1cc-4c89-8ed6-901efa6d81be +wrangle_name: lookup +namespace: null +title: Lookup +description: Lookup values from a saved lookup wrangle. +wrangle_key: lookup +aliases: [] +slug: lookup +status: active +visibility: public +tags: + - lookup +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.lookup + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the column(s) to lookup. + required: true + role: column-selector + schema: + type: string + - name: output + description: >- + Name of the output column(s). When n is provided and the output list length equals n, each + output column receives the corresponding match. A single output containing a wildcard (*) is + expanded into n columns, e.g. "Top *" with n: 3 becomes "Top 1", "Top 2", "Top 3". + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: model_id + description: The model_id to use lookup against. + required: false + role: model-reference + runtime_default: null + schema: + type: + - string + - 'null' + - name: lookup_mode + description: >- + How to perform lookups. 'by_row' (default): lookup each row individually. 'by_dataframe': + lookup unique values once, copy results to all rows. 'by_matrix': lookup once per matrix + permutation. + required: false + role: option + runtime_default: by_row + schema: + type: string + enum: + - by_row + - by_matrix + - by_dataframe + - name: n + description: >- + Number of matches to return per input value. When the output list length equals n, each output + column receives the corresponding match. Otherwise all n matches are stored as a list in each + output column. + required: false + role: option + runtime_default: null + schema: + type: + - integer + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY lookup implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/lookup/_sources/lookup.md + title: Existing lookup Markdown +--- + +# Lookup + +Look up data from a saved Lookup Wrangle. Data is output as a dictionary if an output is not specified or the output does not match any columns in the lookup. If specific lookup columns are named in the output, they will be output as individual columns. + +## Migrated examples +#### State Example + +##### Recipe + +```yaml +wrangles: + - lookup: + input: State + output: + - Abbreviation + model_id: 55555555-5555-5555 +``` + +
+ +
+ +##### Input Sample + +| State | +| --- | +| Texas | +| New York | +| Virginia | + +
+ +
+ +##### Output Sample + +| Abbreviation | +| --- | +| TX | +| NY | +| VA | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/_root/math.md b/wrangles-docs/static/registry/wrangles/_root/math.md new file mode 100644 index 0000000..14bb1de --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/_root/math.md @@ -0,0 +1,103 @@ +--- +schema_version: '0.1' +type: wrangle +id: 494b11ad-00c1-4748-8b93-6bec982f4fec +wrangle_name: math +namespace: null +title: Math +description: Apply a mathematical calculation. +wrangle_key: math +aliases: [] +slug: math +status: active +visibility: public +tags: + - compute + - math +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.math + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: >- + The mathematical expression using column names. e.g. column1 * column2 + column3. Note: spaces + within column names are replaced by underscores (_). + required: true + role: column-selector + schema: + type: string + - name: output + description: The column to output the results to. + required: true + role: column-output + schema: + type: string +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY math implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compute/_sources/math.md + title: Existing math Markdown +--- + +# Math + +Apply mathematical calculations to columns. Also called as `maths`. + +:::info +Spaces within column headers are replaced with underscores automatically. Account for this when writing expressions in `input`. +::: + +## Migrated examples +#### Square Root Example + +##### Recipe + +```yaml +wrangles: + - math: + input: sqrt(Values) + output: Square Root +``` + +
+ +
+ +##### Input Sample + +| Values | +| --- | +| 4 | +| 9 | +| 16 | + +
+ +
+ +##### Output Sample + +| Values | Square Root | +| --- | --- | +| 4 | 2 | +| 9 | 3 | +| 16 | 4 | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/_root/maths.md b/wrangles-docs/static/registry/wrangles/_root/maths.md new file mode 100644 index 0000000..320743b --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/_root/maths.md @@ -0,0 +1,56 @@ +--- +schema_version: '0.1' +type: wrangle +id: null +wrangle_name: maths +namespace: null +title: Maths +description: Deprecated alias for `math`; evaluate an expression and write its result to an output column. +wrangle_key: maths +aliases: [] +slug: maths +status: deprecated +visibility: public +tags: + - maths +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.maths + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name, index, or list of input columns. + required: true + role: column-selector + schema: + type: string + - name: output + description: Name or list of output columns. + required: true + role: column-output + schema: + type: string +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY maths implementation +--- + +# Maths + +## Behavior + +Deprecated alias for `math`; evaluate an expression and write its result to an output column. + +This first-pass guidance is derived from the callable signature. diff --git a/wrangles-docs/static/registry/wrangles/_root/matrix.md b/wrangles-docs/static/registry/wrangles/_root/matrix.md new file mode 100644 index 0000000..efe654b --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/_root/matrix.md @@ -0,0 +1,193 @@ +--- +schema_version: '0.1' +type: wrangle +id: null +wrangle_name: matrix +namespace: null +title: Matrix +description: >- + Apply a matrix of wrangles to the dataframe. This will run the wrangles for each combination of + the variables. +wrangle_key: matrix +aliases: [] +slug: matrix +status: active +visibility: public +tags: + - utility + - matrix +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.matrix + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: variables + description: >- + A dictionary of variables to pass to the wrangle. The key is the variable name and the value + is a list of values. + required: true + role: variables + schema: + type: object + - name: wrangles + description: >- + The wrangles to apply to the dataframe. Each wrangle will be run for each combination of the + variables. + required: true + role: nested-wrangles + schema: + type: array + minItems: 1 + items: + $ref: '#/$defs/wrangles/items' + - name: strategy + description: >- + Determines how to combine variables when there are multiple. loop (default) iterates over each + set of variables, repeating shorter lists until the longest is completed. permutations uses + the combination of all variables against all other variables. + required: false + role: option + runtime_default: loop + schema: + type: string + enum: + - permutations + - loop +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY matrix implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/utility/_sources/matrix.md + title: Existing matrix Markdown +--- + +# Matrix + +Apply a matrix of wrangles to the dataframe. Each wrangle runs for the configured combinations of variables, including recipe variables and variables declared by the `variables` parameter. + +See the [Matrix connector](/python/connectors/matrix) for the connector equivalent. + +## Migrated examples +#### Use Hardcoded Variables + +Run a custom function once for each configured variable value. + +##### Recipe + +```yaml +wrangles: + - matrix: + variables: + var: [A, B, C] + wrangles: + - custom.test_fn: + input: Part Code + output: Part Code ${var} + value: ${var} +``` + +```python +def test_fn(part_code, value): + return part_code + value +``` + +
+ +
+ +##### Input Sample + +| Part Code | +| --- | +| 6202 | +| br549 | +| 554-114 | +| 554-112 | + +
+ +
+ +##### Output Sample + +| Part Code | Part Code A | Part Code B | Part Code C | +| --- | --- | --- | --- | +| 6202 | 6202A | 6202B | 6202C | +| br549 | br549A | br549B | br549C | +| 554-114 | 554-114A | 554-114B | 554-114C | +| 554-112 | 554-112A | 554-112B | 554-112C | + +
+ +
+ +#### Use Unique Variables Per Row + +This example runs `extract.custom` once for each unique model ID. + +##### Recipe + +```yaml +wrangles: + - matrix: + variables: + model_id: set(Model ID) + wrangles: + - extract.custom: + input: Description + output: Extracted Values + model_id: ${model_id} + where: "[Model ID] = ?" + where_params: + - ${model_id} +``` + +
+ +
+ +##### Input Sample + +| Description | Model ID | +| --- | --- | +| The SKF 6202 bearing is the best bearing in the world | xxxxxxxx-xxxx-xxxx | +| The Timken 6102 bearing is indestructible | yyyyyyyy-yyyy-yyyy | +| The Milwaukee impact has 1200ft-lbs of torque | zzzzzzzz-zzzz-zzzz | + +
+ +
+ +##### Output Sample + +| Description | Model ID | Extracted Values | +| --- | --- | --- | +| The SKF 6202 bearing is the best bearing in the world | xxxxxxxx-xxxx-xxxx | 6202 | +| The Timken 6102 bearing is indestructible | yyyyyyyy-yyyy-yyyy | indestructible | +| The Milwaukee impact has 1200ft-lbs of torque | zzzzzzzz-zzzz-zzzz | 1200ft-lbs | + +
+ +
+ +#### Native Variables + +| Variable | Function | +| --- | --- | +| `${column_count}` | Number of columns. | +| `${columns}` | List of all columns. | +| `${df}` | Current dataframe. | +| `${row_count}` | Number of visible rows processed in each batch. | diff --git a/wrangles-docs/static/registry/wrangles/_root/python.md b/wrangles-docs/static/registry/wrangles/_root/python.md new file mode 100644 index 0000000..8e4ce10 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/_root/python.md @@ -0,0 +1,172 @@ +--- +schema_version: '0.1' +type: wrangle +id: c0398a11-7731-4e47-8df0-b07eea0b1d6c +wrangle_name: python +namespace: null +title: Python +description: >- + Apply a simple single-line python command. For more complex python use a custom function. Note, + this evaluates the python command - be especially cautious including variables from untrusted + sources within the command string. The python command will be evaluated once for each row and the + result returned. Reference column values by using their name. Non-alphanumeric characters within + column names are replaced by underscores (_) Additionally, all columns are available as a dict + named kwargs. Additional parameters set for the wrangle will also be available to the command. +wrangle_key: python +aliases: [] +slug: python +status: active +visibility: public +tags: + - compute + - python +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.python + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: command + description: >- + Python command. This must return a value. Note: any non-alphanumeric characters in variable + names are replaced by underscores (_). + required: true + role: option + schema: + type: string + - name: output + description: >- + Name or list of output column(s). To output multiple columns, return a list of the + corresponding length. + required: true + role: column-output + schema: + type: + - string + - array + - name: input + description: >- + Name or list of input column(s) to filter the data available to the command. Useful in + conjunction with kwargs to target a variable range of columns. If not specified, all columns + will be available. + required: false + role: column-selector + runtime_default: null + schema: + type: + - string + - integer + - array + - 'null' + - name: except + description: >- + Value to return for the row if an exception occurs during the evaluation. If not provided, an + exception will be raised as normal. If multiple output columns are specified, this must match + the length. + required: false + role: option + schema: + type: + - string + - array + - number + - integer + - boolean + - object +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY python implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compute/_sources/python.md + title: Existing python Markdown +--- + +# Python + +The Python wrangle executes simple Python commands inline within a recipe. Row values are referenced by column name and commands are evaluated once per row. Spaces within column names are replaced by underscores (`_`). All columns are also available as a dictionary named `kwargs`. For more complex Python, use custom functions. + +:::caution +This wrangle evaluates the Python command. Be cautious when including variables from untrusted sources in the command string. +::: + +## Migrated examples +#### Python Wrangle + +##### Recipe + +```yaml +wrangles: + - python: + output: result + command: My_Column.upper() +``` + +
+ +
+ +##### Input Sample + +| My Column | +| --- | +| example text | + +
+ +
+ +##### Output Sample + +| My Column | result | +| --- | --- | +| example text | EXAMPLE TEXT | + +
+ +
+ +#### Including Your Own Parameters + +The Python wrangle supports parameters so values of unknown origin can be injected safely. + +##### Recipe + +```yaml +wrangles: + - python: + output: sliced + command: input_column[:i] + i: ${var} +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +_No sample available._ + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/_root/recipe.md b/wrangles-docs/static/registry/wrangles/_root/recipe.md new file mode 100644 index 0000000..296f36f --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/_root/recipe.md @@ -0,0 +1,83 @@ +--- +schema_version: '0.1' +type: wrangle +id: null +wrangle_name: recipe +namespace: null +title: Recipe +description: Run another recipe as a wrangle against the current dataframe. +wrangle_key: recipe +aliases: [] +slug: recipe +status: active +visibility: public +tags: + - recipe +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.recipe + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name, index, or list of input columns. + required: false + role: column-selector + runtime_default: null + schema: + type: + - string + - integer + - array + - 'null' + - name: output + description: Name or list of output columns. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: name + description: File name of the recipe. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + - name: variables + description: A dictionary of variables to pass to the recipe. + required: false + role: variables + runtime_default: null + schema: + type: + - object + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY recipe implementation +--- + +# Recipe + +## Behavior + +Run another recipe as a wrangle against the current dataframe. + +This first-pass guidance is derived from the callable signature and its embedded Python schema docstring. diff --git a/wrangles-docs/static/registry/wrangles/_root/reindex.md b/wrangles-docs/static/registry/wrangles/_root/reindex.md new file mode 100644 index 0000000..4191c70 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/_root/reindex.md @@ -0,0 +1,134 @@ +--- +schema_version: '0.1' +type: wrangle +id: def87df8-72da-4e34-83c1-1fde25126257 +wrangle_name: reindex +namespace: null +title: Reindex +description: Changes the row labels and column labels of a DataFrame. +wrangle_key: reindex +aliases: [] +slug: reindex +status: active +visibility: public +tags: + - transform + - reindex +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.pandas.reindex + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: false + where_params: false +parameters: + - name: labels + description: New labels / index to conform the axis specified by ‘axis’ to. + required: false + role: option + runtime_default: null + schema: + type: + - array + - 'null' + - name: index + description: New labels for the index. Preferably an Index object to avoid duplicating data. + required: false + role: option + runtime_default: null + schema: + type: + - array + - 'null' + - name: columns + description: New labels for the columns. Preferably an Index object to avoid duplicating data. + required: false + role: option + runtime_default: null + schema: + type: + - array + - 'null' + - name: axis + description: Axis to target. Can be either the axis name (‘index’, ‘columns’) or number (0, 1). + required: false + role: option + runtime_default: null + schema: + type: + - string + - integer + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/pandas.py + title: WranglesPY reindex implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/transform/_sources/reindex.md + title: Existing reindex Markdown +--- + +# Reindex + +Conform a DataFrame to a new index with optional filling logic. + +## Migrated examples +:::note +Cannot specify both `axis` and any of `index` or `columns`. Reindex is not compatible with `where` filtering. +::: + +#### Reindexing a Dataframe + +##### Recipe + +```yaml +wrangles: + - reindex: + index: + - 5 + - 4 + - 3 + - 2 + - 1 +``` + +
+ +
+ +##### Input Sample + +| | Material | Product Data | +| --- | --- | --- | +| 1 | Ceramic | SKF ball brg | +| 2 | Rubber | brg seal | +| 3 | Brass | Ball valve | +| 4 | Ceramic | Ceramic cartridge | +| 5 | Stainless Steel | Needle Bearing | + +
+ +
+ +##### Output Sample + +| | Material | Product Data | +| --- | --- | --- | +| 5 | Stainless Steel | Needle Bearing | +| 4 | Ceramic | Ceramic cartridge | +| 3 | Brass | Ball valve | +| 2 | Rubber | brg seal | +| 1 | Ceramic | SKF ball brg | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/_root/remove-words.md b/wrangles-docs/static/registry/wrangles/_root/remove-words.md new file mode 100644 index 0000000..d84baf3 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/_root/remove-words.md @@ -0,0 +1,127 @@ +--- +schema_version: '0.1' +type: wrangle +id: 543b96c3-f354-48be-8046-bf0cb9fbaf56 +wrangle_name: remove_words +namespace: null +title: Remove Words +description: Remove all the elements that occur in one list from another. +wrangle_key: remove_words +aliases: [] +slug: remove-words +status: active +visibility: public +tags: + - format + - remove-words +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.remove_words + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of column to remove words from. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: to_remove + description: Column or list of columns with a list of words to be removed. + required: true + role: option + schema: + type: string + - name: output + description: Name of the output columns. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: tokenize_to_remove + description: Tokenize all to_remove inputs. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: ignore_case + description: Ignore input and to_remove case. + required: false + role: option + runtime_default: true + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY remove_words implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/remove-words.md + title: Existing remove_words Markdown +--- + +# Remove Words + +Remove all the elements that occur in one list from another. + +## Migrated examples +#### Removing Words From a Column + +##### Recipe + +```yaml +wrangles: + - remove_words: + input: Description + to_remove: # To Remove columns must be list + - Materials + - Colours + output: Product + tokenize_to_remove: True + ignore_case: False +``` + +
+ +
+ +##### Input Sample + +| Colours | Materials | Description | +| --- | --- | --- | +| ['Blue'] | ['Steel'] | Steel Blue Bottle | +| ['Blue'] | ['Steel'] | ['Steel', 'Blue', 'Bottle'] | + +
+ +
+ +##### Output Sample + +| Product | +| --- | +| Bottle | +| Bottle | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/_root/rename.md b/wrangles-docs/static/registry/wrangles/_root/rename.md new file mode 100644 index 0000000..882075d --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/_root/rename.md @@ -0,0 +1,203 @@ +--- +schema_version: '0.1' +type: wrangle +id: ab06898f-faf7-42e7-8275-5e3034a4d727 +wrangle_name: rename +namespace: null +title: Rename +description: Rename a column or list of columns. +wrangle_key: rename +aliases: [] +slug: rename +status: active +visibility: public +tags: + - transform + - rename +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.rename + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: false + where_params: false +parameters: + - name: input + description: Name or list of input columns. + required: false + role: column-selector + runtime_default: null + schema: + type: + - string + - integer + - array + - 'null' + - name: output + description: Name or list of output columns. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: wrangles + description: >- + Use wrangles to transform the column names. The input is named 'columns' and the final result + must also include the column named 'columns'. This can only be used instead of the standard + rename. + required: false + role: nested-wrangles + runtime_default: null + schema: + type: + - array + - 'null' + minItems: 1 + items: + $ref: '#/$defs/wrangles/items' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY rename implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/transform/_sources/rename.md + title: Existing rename Markdown +--- + +# Rename + +Rename a column or list of columns. + +## Migrated examples +:::note +Rename is not compatible with `where` filtering. +::: + +#### Renaming Columns With Input and Output + +##### Recipe + +```yaml +wrangles: + - rename: + input: + - Manufacturer Name + - Manufacturer Part Number + output: + - Manufacturer + - MPN +``` + +
+ +
+ +##### Input Sample + +| Manufacturer Name | Manufacturer Part Number | +| --- | --- | +| SKF | 302-2 | +| Timken | PF48 | + +
+ +
+ +##### Output Sample + +| Manufacturer | MPN | +| --- | --- | +| SKF | 302-2 | +| Timken | PF48 | + +
+ +
+ +#### Renaming Columns Without Using Input and Output + +##### Recipe + +```yaml +wrangles: + - rename: + Manufacturer Name: Manufacturer + Manufacturer Part Number: MPN +``` + +
+ +
+ +##### Input Sample + +| Manufacturer Name | Manufacturer Part Number | +| --- | --- | +| SKF | 302-2 | +| Timken | PF48 | + +
+ +
+ +##### Output Sample + +| Manufacturer | MPN | +| --- | --- | +| SKF | 302-2 | +| Timken | PF48 | + +
+ +
+ +#### Using Wrangles in Rename + +##### Recipe + +```yaml +wrangles: + - rename: + wrangles: + - convert.case: + input: columns + case: upper +``` + +
+ +
+ +##### Input Sample + +| Manufacturer Name | Manufacturer Part Number | +| --- | --- | +| SKF | 302-2 | +| Timken | PF48 | + +
+ +
+ +##### Output Sample + +| MANUFACTURER NAME | MANUFACTURER PART NUMBER | +| --- | --- | +| SKF | 302-2 | +| Timken | PF48 | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/_root/replace.md b/wrangles-docs/static/registry/wrangles/_root/replace.md new file mode 100644 index 0000000..452a7fa --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/_root/replace.md @@ -0,0 +1,121 @@ +--- +schema_version: '0.1' +type: wrangle +id: f0ab715e-9e0e-4614-83e4-5cd8ea08a09f +wrangle_name: replace +namespace: null +title: Replace +description: >- + Quick find and replace for simple values. Can use regex if 'input' in params and + isinstance(params['input'], list):in the find field. +wrangle_key: replace +aliases: [] +slug: replace +status: active +visibility: public +tags: + - format + - replace +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.replace + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name or list of input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: find + description: Pattern to find using regex. + required: true + role: option + schema: + type: string + - name: replace + description: Value to replace the pattern found. + required: true + role: option + schema: + type: string + - name: output + description: Name or list of output column. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY replace implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/replace.md + title: Existing replace Markdown +--- + +# Replace + +Quick find and replace for simple values. Can use regex in the `find` field. + +:::note +Values that are not a number or a string pass through unaltered. +::: + +## Migrated examples +#### Replacing an Abbreviation + +##### Recipe + +```yaml +wrangles: + - replace: + input: Product Data + find: brg + replace: bearing +``` + +
+ +
+ +##### Input Sample + +| Product Data | +| --- | +| SKF ball brg | +| brg seal | + +
+ +
+ +##### Output Sample + +| Product Data | +| --- | +| SKF ball bearing | +| bearing seal | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/_root/round.md b/wrangles-docs/static/registry/wrangles/_root/round.md new file mode 100644 index 0000000..9f29e10 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/_root/round.md @@ -0,0 +1,110 @@ +--- +schema_version: '0.1' +type: wrangle +id: 12f3111b-8511-4e42-8d3f-b5302dc3b4e4 +wrangle_name: round +namespace: null +title: Round +description: Round column(s) to the specified decimals. +wrangle_key: round +aliases: [] +slug: round +status: active +visibility: public +tags: + - format + - round +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.pandas.round + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column(s). + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: decimals + description: Number of decimal places to round column. + required: false + role: option + runtime_default: 0 + schema: + type: integer + - name: output + description: Name of the output column(s). + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/pandas.py + title: WranglesPY round implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/round.md + title: Existing round Markdown +--- + +# Round + +Round numbers in a column to the nearest decimal point of your choosing. + +## Migrated examples +#### Rounding a Column + +##### Recipe + +```yaml +wrangles: + - round: + input: Cost Per Unit + output: Cost Rounded + decimals: 2 +``` + +
+ +
+ +##### Input Sample + +| Cost Per Unit | +| --- | +| 3.14159 | +| 2.71828 | + +
+ +
+ +##### Output Sample + +| Cost Per Unit | Cost Rounded | +| --- | --- | +| 3.14159 | 3.14 | +| 2.71828 | 2.72 | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/_root/similarity.md b/wrangles-docs/static/registry/wrangles/_root/similarity.md new file mode 100644 index 0000000..03f5f5e --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/_root/similarity.md @@ -0,0 +1,127 @@ +--- +schema_version: '0.1' +type: wrangle +id: 7c733344-4cce-4938-8013-53742fb46a90 +wrangle_name: similarity +namespace: null +title: Similarity +description: Calculate the cosine similarity of two vectors. +wrangle_key: similarity +aliases: [] +slug: similarity +status: active +visibility: public +tags: + - compare + - similarity +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.similarity + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Two columns of vectors to compare the similarity of. + required: true + role: column-selector + schema: + type: array + minItems: 2 + maxItems: 2 + - name: output + description: Name of the output column. + required: true + role: column-output + schema: + type: string + - name: method + description: >- + The type of similarity to calculate (cosine or euclidean). Adjusted cosine adjusts the default + cosine calculation to cover a range of 0-1 for typical comparisons. + required: false + role: option + runtime_default: cosine + schema: + type: string + enum: + - cosine + - adjusted cosine + - euclidean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY similarity implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compare/_sources/similarity.md + title: Existing similarity Markdown +--- + +# Similarity + +Calculate the similarity of two vectors. + +:::info +Similarity only works on vectors. To produce vectors from a column of strings, use `create.embeddings` first. +::: + +## Migrated examples +#### Similarity Between Embeddings + +##### Recipe + +```yaml +wrangles: + - create.embeddings: + input: col1 + api_key: ${my_key} + output: col1 embeddings + + - create.embeddings: + input: col2 + api_key: ${my_key} + output: col2 embeddings + + - similarity: + input: + - col1 embeddings + - col2 embeddings + output: similarity + method: adjusted cosine +``` + +
+ +
+ +##### Input Sample + +| col1 | col2 | +| --- | --- | +| SKF | Timken | +| Ball Bearing | Roller Bearing | + +
+ +
+ +##### Output Sample + +| col1 | col2 | col1 embeddings | col2 embeddings | similarity | +| --- | --- | --- | --- | --- | +| SKF | Timken | [1, 2, 3, 4] | [4, 3, 2, 1] | 0.158931 | +| Ball Bearing | Roller Bearing | [5, 6, 7, 8] | [5, 6, 7, 9] | 0.942437 | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/_root/sort.md b/wrangles-docs/static/registry/wrangles/_root/sort.md new file mode 100644 index 0000000..211ec33 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/_root/sort.md @@ -0,0 +1,116 @@ +--- +schema_version: '0.1' +type: wrangle +id: 1dcf06ad-898a-4d83-862c-4774be37a687 +wrangle_name: sort +namespace: null +title: Sort +description: Sort the data. +wrangle_key: sort +aliases: [] +slug: sort +status: active +visibility: public +tags: + - select + - sort +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.pandas.sort + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: ignore_index + description: Ignore Index value accepted by the runtime. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: by + description: Name or list of the column(s) to sort by. + required: true + role: column-selector + schema: + type: + - string + - array + - name: ascending + description: >- + Sort ascending vs. descending. Specify a list to sort multiple columns in different orders. If + this is a list of bools then it must match the length of the by. + required: false + role: option + schema: + type: + - boolean + - array + items: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/pandas.py + title: WranglesPY sort implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/sort.md + title: Existing sort Markdown +--- + +# Sort + +Sort the data + +## Migrated examples +#### Replacing Abbreviations + +##### Recipe + +```yaml +wrangles: + - sort: + by: Price + ascending: true +``` + +
+ +
+ +##### Input Sample + +| Item | Price | +| --- | --- | +| Hammer | 11.99 | +| Chisel | 4.99 | +| Drill | 29.99 | +| Wrench | 6.99 | +| Saw | 13.99 | + +
+ +
+ +##### Output Sample + +| Item | Price | +| --- | --- | +| Chisel | 4.99 | +| Wrench | 6.99 | +| Hammer | 11.99 | +| Saw | 13.99 | +| Drill | 29.99 | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/_root/sql.md b/wrangles-docs/static/registry/wrangles/_root/sql.md new file mode 100644 index 0000000..4c3178d --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/_root/sql.md @@ -0,0 +1,124 @@ +--- +schema_version: '0.1' +type: wrangle +id: 467a06b1-a697-4d31-8061-7d83a719fd79 +wrangle_name: sql +namespace: null +title: SQL +description: >- + Apply a SQL command to the current dataframe. Only SELECT statements are supported - the result + will be the output. +wrangle_key: sql +aliases: [] +slug: sql +status: active +visibility: public +tags: + - compute + - sql +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.sql + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: command + description: SQL Command. The table is called df. For specific SQL syntax, this uses the SQLite dialect. + required: true + role: option + schema: + type: string + - name: params + description: >- + Variables to use in conjunctions with query. This allows the query to be parameterized. This + uses sqlite syntax (? or :name). + required: false + role: option + runtime_default: null + schema: + type: + - array + - object + - 'null' + - name: preserve_index + description: Preserve Index value accepted by the runtime. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: preserve_data_types + description: Preserve Data Types value accepted by the runtime. + required: false + role: option + runtime_default: true + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY sql implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compute/_sources/sql.md + title: Existing sql Markdown +--- + +# SQL + +Apply a SQL command to the current dataframe. Only `SELECT` statements are supported; the result becomes the output. The current table is called `df`. + +:::info +SQL does not currently work with objects. If your table contains objects, use `convert.to_json` before using SQL. SQL is not compatible with `where` filtering. +::: + +## Migrated examples +#### Selecting a Subset of Data + +##### Recipe + +```yaml +wrangles: + - sql: + command: | + SELECT header1, header2 + FROM df + WHERE header1 >= 2 +``` + +
+ +
+ +##### Input Sample + +| header1 | header2 | header3 | +| --- | --- | --- | +| 1 | a | x | +| 2 | b | y | +| 3 | c | z | + +
+ +
+ +##### Output Sample + +| header1 | header2 | +| --- | --- | +| 2 | b | +| 3 | c | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/_root/standardize.md b/wrangles-docs/static/registry/wrangles/_root/standardize.md new file mode 100644 index 0000000..e414d26 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/_root/standardize.md @@ -0,0 +1,120 @@ +--- +schema_version: '0.1' +type: wrangle +id: 53cd3fdd-24e2-4411-8655-6014b92a3f3a +wrangle_name: standardize +namespace: null +title: Standardize +description: >- + Standardize data using a DIY or bespoke standardization wrangle. Requires WrangleWorks Account and + Subscription. +wrangle_key: standardize +aliases: [] +slug: standardize +status: active +visibility: public +tags: + - format + - standardize +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.standardize + contract_status: verified +access: + ai_powered: false + requires_account: true + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name or list of input columns. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: model_id + description: The ID of the wrangle to use (do not include 'find' and 'replace'). + required: true + role: model-reference + schema: + type: + - string + - array + - name: output + description: Name or list of output columns. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: case_sensitive + description: Allows the wrangle to be case sensitive if set to True, default is False. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY standardize implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/standardize.md + title: Existing standardize Markdown +--- + +# Standardize + +Run a standardize wrangle, such as one that expands abbreviations. A standardization wrangle must be trained first. + +## Migrated examples +#### Replacing Abbreviations + +##### Recipe + +```yaml +wrangles: + - standardize: + input: Abbrev + output: Abbreviations + model_id: code_here +``` + +
+ +
+ +##### Input Sample + +| Abbrev | +| --- | +| ASAP | +| ETA | + +
+ +
+ +##### Output Sample + +| Abbreviations | +| --- | +| As Soon As Possible | +| Estimated Time of Arrival | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/_root/translate.md b/wrangles-docs/static/registry/wrangles/_root/translate.md new file mode 100644 index 0000000..ddba2cc --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/_root/translate.md @@ -0,0 +1,177 @@ +--- +schema_version: '0.1' +type: wrangle +id: 73c3ceb6-ffd8-4d74-8389-c83b99d33bb0 +wrangle_name: translate +namespace: null +title: Translate +description: >- + Translate the input to a different language. Requires WrangleWorks Account and DeepL API Key (A + free account for up to 500,000 characters per month is available). +wrangle_key: translate +aliases: [] +slug: translate +status: active +visibility: public +tags: + - format + - translate +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.translate + contract_status: verified +access: + ai_powered: false + requires_account: true + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the column to translate. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output column. + required: true + role: column-output + schema: + type: + - string + - array + - name: target_language + description: Code of the language to translate to. + required: true + role: option + schema: + type: string + enum: + - Bulgarian + - Chinese + - Czech + - Danish + - Dutch + - English (American) + - English (British) + - Estonian + - Finnish + - French + - German + - Greek + - Hungarian + - Italian + - Japanese + - Latvian + - Lithuanian + - Polish + - Portuguese + - Portuguese (Brazilian) + - Romanian + - Russian + - Slovak + - Slovenian + - Spanish + - Swedish + - name: source_language + description: Code of the language to translate from. If omitted, automatically detects the input language. + required: false + role: option + runtime_default: AUTO + schema: + type: string + enum: + - Auto + - Bulgarian + - Chinese + - Czech + - Danish + - Dutch + - English + - Estonian + - Finnish + - French + - German + - Greek + - Hungarian + - Italian + - Japanese + - Latvian + - Lithuanian + - Polish + - Portuguese + - Romanian + - Russian + - Slovak + - Slovenian + - Spanish + - Swedish + - name: case + description: Allow changing the case of the input prior to translation. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY translate implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/translate.md + title: Existing translate Markdown +--- + +# Translate + +Translate the input column to another language. Powered by DeepL. + +## Migrated examples +#### Translating Spanish to English + +##### Recipe + +```yaml +wrangles: + - translate: + input: Español + output: English + source_language: Spanish + target_language: English (British) +``` + +
+ +
+ +##### Input Sample + +| Español | +| --- | +| ¡Hola Mundo! | + +
+ +
+ +##### Output Sample + +| English | +| --- | +| Hello World! | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/_root/transpose.md b/wrangles-docs/static/registry/wrangles/_root/transpose.md new file mode 100644 index 0000000..b9fa957 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/_root/transpose.md @@ -0,0 +1,97 @@ +--- +schema_version: '0.1' +type: wrangle +id: 8716347f-f286-49b2-8a0b-cb73292e7475 +wrangle_name: transpose +namespace: null +title: Transpose +description: Transpose the DataFrame (swap columns to rows). +wrangle_key: transpose +aliases: [] +slug: transpose +status: active +visibility: public +tags: + - transform + - transpose +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.pandas.transpose + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: header_column + description: >- + Name or position of the column that will be used as the column headings for the transposed + DataFrame. Default 0 (first column). Use header_column = null to not use any column as header. + required: false + role: column-selector + runtime_default: 0 + schema: + type: + - string + - integer + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/pandas.py + title: WranglesPY transpose implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/transform/_sources/transpose.md + title: Existing transpose Markdown +--- + +# Transpose + +Transpose a dataframe. + +## Migrated examples +:::note +Transpose is not compatible with `where` filtering. +::: + +#### Transposing a Dataframe + +##### Recipe + +```yaml +wrangles: + - transpose: + header_column: Material +``` + +
+ +
+ +##### Input Sample + +| Material | Product Data | +| --- | --- | +| Ceramic | SKF ball brg | +| Rubber | brg seal | + +
+ +
+ +##### Output Sample + +| Material | Ceramic | Rubber | +| --- | --- | --- | +| Product Data | SKF ball brg | brg seal | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/_root/try.md b/wrangles-docs/static/registry/wrangles/_root/try.md new file mode 100644 index 0000000..34daeb8 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/_root/try.md @@ -0,0 +1,110 @@ +--- +schema_version: '0.1' +type: wrangle +id: null +wrangle_name: try +namespace: null +title: Try +description: Try a list of wrangles and catch any errors that occur. +wrangle_key: try +aliases: [] +slug: try +status: active +visibility: public +tags: + - utility + - try +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.main.Try + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: wrangles + description: List of wrangles to apply. + required: true + role: nested-wrangles + schema: + type: array + minItems: 1 + items: + $ref: '#/$defs/wrangles/items' + - name: retries + description: Number of times to retry the wrangles if an error occurs. Default 0. + required: false + role: option + runtime_default: 0 + schema: + type: integer + minimum: 0 + - name: except + description: >- + An action to take if the wrangles encounter an error. This can contain a list of wrangles or a + dictionary of column names and values. If except is not provided, the error will be logged and + the recipe will continue. + required: false + role: option + schema: + type: object + minItems: 1 + items: + $ref: '#/$defs/wrangles/items' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/main.py + title: WranglesPY try implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/utility/_sources/try.md + title: Existing try Markdown +--- + +# Try + +Run a list of wrangles and catch errors. When `except` is provided, its wrangles or fallback column values run after an error; otherwise, the error is logged and the recipe continues. + +## Migrated examples +#### Use Fallback Wrangles After an Error + +##### Recipe + +```yaml +wrangles: + - try: + wrangles: + - risky_wrangle: + input: column + except: + - backup_wrangle: + input: column +``` + +
+ +
+ +##### Input Sample + +_The input dataframe is passed to the primary wrangles._ + +
+ +
+ +##### Output Sample + +_The primary result is returned on success; the `except` result is returned after an error._ + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/compare/lists.md b/wrangles-docs/static/registry/wrangles/compare/lists.md new file mode 100644 index 0000000..8e7f258 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/compare/lists.md @@ -0,0 +1,209 @@ +--- +schema_version: '0.1' +type: wrangle +id: a393225e-7ccf-4708-83f8-d5abd6ba9b1e +wrangle_name: lists +namespace: compare +title: Lists +description: Compare multiple lists and return the intersection, difference, or union. +wrangle_key: compare.lists +aliases: [] +slug: compare/lists +status: active +visibility: public +tags: + - compare + - lists +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.compare.lists + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: List of input columns containing lists to compare. + required: true + role: column-selector + schema: + type: array + - name: output + description: Name of the output column. + required: true + role: column-output + schema: + type: string + - name: method + description: Type of comparison to perform. + required: false + role: option + runtime_default: intersection + schema: + type: string + enum: + - intersection + - difference + - union + - name: remove_duplicates + description: Remove duplicates from the result. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: ignore_case + description: Ignore case when comparing string items. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/compare.py + title: WranglesPY compare.lists implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compare/_sources/lists.md + title: Existing compare.lists Markdown +--- + +# Lists + +Compare multiple lists and return the intersection, difference, or union. + +## Migrated examples +#### Comparing the difference between two columns of lists + +##### Recipe + +```yaml +wrangles: + - compare.lists: + input: + - col1 + - col2 + output: Difference + method: difference +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | +| --- | --- | +| [A, B, C] | [C, D, E] | +| [H, I, J, K] | [H, I, J] | +| [X, Y, Z] | [1, 2, 3] | + +
+ +
+ +##### Output Sample + +| Difference | +| --- | +| [A, B] | +| [K] | +| [X, Y, Z] | + +
+ +
+ +#### Comparing the intersection between two columns of lists + +##### Recipe + +```yaml +wrangles: + - compare.lists: + input: + - col1 + - col2 + output: Intersection + method: intersection +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | +| --- | --- | +| [A, B, C] | [C, D, E] | +| [H, I, J, K] | [H, I, J] | +| [X, Y, Z] | [1, 2, 3] | + +
+ +
+ +##### Output Sample + +| Intersection | +| --- | +| [C] | +| [H, I, J] | +| [] | + +
+ +
+ +#### Comparing the union between two columns of lists + +##### Recipe + +```yaml +wrangles: + - compare.lists: + input: + - col1 + - col2 + output: Union + method: union +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | +| --- | --- | +| [A, B, C] | [C, D, E] | +| [H, I, J, K] | [H, I, J] | +| [X, Y, Z] | [1, 2, 3] | + +
+ +
+ +##### Output Sample + +| Union | +| --- | +| [A, B, C, D, E] | +| [H, I, J, K] | +| [X, Y, Z, 1, 2, 3] | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/compare/text.md b/wrangles-docs/static/registry/wrangles/compare/text.md new file mode 100644 index 0000000..c726f75 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/compare/text.md @@ -0,0 +1,281 @@ +--- +schema_version: '0.1' +type: wrangle +id: 31905b74-ce58-45cd-8add-821cc04ab946 +wrangle_name: text +namespace: compare +title: Text +description: >- + Compare two strings and return the intersection or difference, use overlap to find the matching + characters between the two strings, or use similarity to get a numeric similarity score. +wrangle_key: compare.text +aliases: [] +slug: compare/text +status: active +visibility: public +tags: + - compare + - text +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.compare.text + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: The columns to compare. First column is the base column. + required: true + role: column-selector + schema: + type: array + - name: output + description: >- + The column to output the results to. Must be a list of two column names [mask_column, + ratio_column] when method is overlap and include_ratio is true; otherwise a single column + name. + required: true + role: column-output + schema: + type: + - string + - array + - name: method + description: The type of comparison to perform (difference, intersection, overlap, similarity). + required: false + role: option + runtime_default: difference + schema: + type: string + enum: + - difference + - intersection + - overlap + - similarity + - name: char + description: Character to split strings on for difference and intersection. Defaults to a space. + required: false + role: option + runtime_default: ' ' + schema: + type: string + - name: non_match_char + description: Character to use for non-matching characters when using overlap. + required: false + role: option + runtime_default: '*' + schema: + type: string + - name: include_ratio + description: Include the ratio of matching characters when using overlap. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: decimal_places + description: Number of decimal places to round the overlap ratio to. + required: false + role: option + runtime_default: 3 + schema: + type: integer + - name: exact_match + description: Value to use for exact matches when using overlap. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + - name: empty_a + description: Value to use when input A is empty when using overlap. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + - name: empty_b + description: Value to use when input B is empty when using overlap. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + - name: all_empty + description: Value to use when both inputs are empty when using overlap. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + - name: case_sensitive + description: Whether the comparison is case sensitive. Defaults to true. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: metric + description: Metric value accepted by the runtime. + required: false + role: option + runtime_default: token_sort + schema: + type: string +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/compare.py + title: WranglesPY compare.text implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compare/_sources/text.md + title: Existing compare.text Markdown +--- + +# Text + +Compare two strings and return the intersection or difference, or use overlap to find the matching characters between the two strings. + +## Migrated examples +#### Comparing the difference between two columns of text + +##### Recipe + +```yaml +wrangles: + - compare.text: + input: + - col1 + - col2 + output: Difference + method: difference +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | +| --- | --- | +| Large Oak Wood White Marble Top Bookshelf | Large Pine Wood Black Marble Bottom Bookshelf | +| Medium Oak Wood White Marble Top Coffee Table | Medium Maple Wood Orange Steel Top Coffee Table | +| Small Oak Wood White Marble Top Console Table | Small Normal Wood Blue Plastic Top Console Table | + +
+ +
+ +##### Output Sample + +| Difference | +| --- | +| Pine Black Bottom | +| Maple Orange Steel | +| Normal Blue Plastic | + +
+ +
+ +#### Comparing the intersection of two columns of text + +##### Recipe + +```yaml +wrangles: + - compare.text: + input: + - col1 + - col2 + output: Intersection + method: intersection +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | +| --- | --- | +| Large Oak Wood White Marble Top Bookshelf | Large Pine Wood Black Marble Bottom Bookshelf | +| Medium Oak Wood White Marble Top Coffee Table | Medium Maple Wood Orange Steel Top Coffee Table | +| Small Oak Wood White Marble Top Console Table | Small Normal Wood Blue Plastic Top Console Table | + +
+ +
+ +##### Output Sample + +| Intersection | +| --- | +| Large Wood Marble Bookshelf | +| Medium Wood Top Coffee Table | +| Small Wood Top Console Table | + +
+ +
+ +#### Comparing the overlap of two columns of text + +##### Recipe + +```yaml +wrangles: + - compare.text: + input: + - Part Code1 + - Part Code2 + output: Overlap + method: overlap +``` + +
+ +
+ +##### Input Sample + +| Part Code1 | Part Code2 | +| --- | --- | +| SKF6202 | TMKN6202 | +| X06-02-000 | X06-81-000 | +| 7100E15-V-230/3 | 7100E15-V-120/1 | + +
+ +
+ +##### Output Sample + +| Overlap | +| --- | +| ****6202 | +| X06-**-000 | +| 7100E15-V-\**0/\* | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/compute/case-when.md b/wrangles-docs/static/registry/wrangles/compute/case-when.md new file mode 100644 index 0000000..c93bf26 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/compute/case-when.md @@ -0,0 +1,185 @@ +--- +schema_version: '0.1' +type: wrangle +id: 9a9662e4-53d1-4932-8adf-bc3e7aa364ad +wrangle_name: case_when +namespace: compute +title: Case When +description: Assign values to a column based on conditional logic. +wrangle_key: compute.case_when +aliases: [] +slug: compute/case-when +status: active +visibility: public +tags: + - compute + - case-when +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.compute.case_when + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: output + description: Name of the output column. + required: true + role: column-output + schema: + type: string + - name: cases + description: List of conditions and corresponding values. + required: true + role: option + schema: + type: array + minItems: 1 + items: + type: object + required: + - condition + - value + properties: + condition: + type: string + value: + type: + - string + - number + - integer + - boolean + - name: default + description: Value to assign if no conditions are met. Default None. + required: false + role: fallback-value + runtime_default: null + schema: + type: + - string + - number + - integer + - boolean + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/compute.py + title: WranglesPY compute.case_when implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compute/_sources/case-when.md + title: Existing compute.case_when Markdown +--- + +# Case When + +Assign values to a column based on conditional logic. + +## Migrated examples +#### Assigning Letter Grades + +##### Recipe + +```yaml +wrangles: + - compute.case_when: + output: Letter Grade + cases: + - condition: Grade > 89 + value: 'A' + - condition: 90 > Grade > 79 + value: 'B' + - condition: 80 > Grade > 69 + value: 'C' + - condition: 70 > Grade + value: 'F' +``` + +
+ +
+ +##### Input Sample + +| Student | Grade | +| --- | --- | +| Billy | 62 | +| Sarah | 91 | +| Timmy | 88 | +| Tammy | 74 | + +
+ +
+ +##### Output Sample + +| Student | Grade | Letter Grade | +| --- | --- | --- | +| Billy | 62 | F | +| Sarah | 91 | A | +| Timmy | 88 | B | +| Tammy | 74 | C | + +
+ +
+ +#### Assigning Letter Grades with Attendance + +Conditions can be combined so multiple criteria must be met before assigning a value. + +##### Recipe + +```yaml +wrangles: + - compute.case_when: + output: Letter Grade + cases: + - condition: (Grade > .89) & (Attendance == 'Good') + value: 'A' + - condition: (.90 > Grade > .79) & (Attendance == 'Good') + value: 'B' + - condition: (.80 > Grade > .69) & (Attendance == 'Good') + value: 'C' + - condition: (.70 > Grade) or (Attendance == 'Poor') + value: 'F' +``` + +
+ +
+ +##### Input Sample + +| Student | Grade | Attendance | +| --- | --- | --- | +| Billy | 62 | Poor | +| Sarah | 91 | Poor | +| Timmy | 88 | Good | +| Tammy | 74 | Good | + +
+ +
+ +##### Output Sample + +| Student | Grade | Attendance | Letter Grade | +| --- | --- | --- | --- | +| Billy | 62 | Poor | F | +| Sarah | 91 | Poor | F | +| Timmy | 88 | Good | B | +| Tammy | 74 | Good | C | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/compute/score-search-results.md b/wrangles-docs/static/registry/wrangles/compute/score-search-results.md new file mode 100644 index 0000000..68dbc5d --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/compute/score-search-results.md @@ -0,0 +1,209 @@ +--- +schema_version: '0.1' +type: wrangle +id: 313a8ec0-cf13-4956-8d3b-5362b8641d0f +wrangle_name: score_search_results +namespace: compute +title: Score Search Results +description: >- + Scores and filters search results based on progressive partial/exact matching. Can return + dictionaries or a parallel list of formatted strings. +wrangle_key: compute.score_search_results +aliases: [] +slug: compute/score-search-results +status: active +visibility: public +tags: + - compute + - score-search-results +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.compute.score_search_results + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: >- + List of 3 to 5 columns -> [results, suppliers, part_codes, mpns (optional), descriptions + (optional)]. + required: true + role: column-selector + schema: + type: array + - name: output + description: >- + Output column for the dictionaries. If a list of 2 is provided, outputs [dicts_column, + pretty_strings_column]. + required: true + role: column-output + schema: + type: + - string + - array + - name: must_match_part_code + description: If true, filters out results that don't satisfy the allowed match types. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: allow_mpn_exact + description: Treat exact MPN matches as valid part code matches. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: allow_mpn_partial + description: Treat partial MPN matches as valid part code matches. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: allow_other_exact + description: Treat exact other part code matches as valid part code matches. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: allow_other_partial + description: Treat partial other part code matches as valid part code matches. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: blacklist_keywords + description: Comma-separated list or array of keywords to filter out URLs containing them. + required: false + role: option + runtime_default: '' + schema: + type: string + - name: mpn_exact_score + description: Mpn Exact Score value accepted by the runtime. + required: false + role: option + runtime_default: 8 + schema: + type: number + - name: mpn_partial_base + description: Mpn Partial Base value accepted by the runtime. + required: false + role: option + runtime_default: 4 + schema: + type: number + - name: part_code_exact_score + description: Part Code Exact Score value accepted by the runtime. + required: false + role: option + runtime_default: 6 + schema: + type: number + - name: part_code_partial_base + description: Part Code Partial Base value accepted by the runtime. + required: false + role: option + runtime_default: 2 + schema: + type: number + - name: supplier_exact_score + description: Supplier Exact Score value accepted by the runtime. + required: false + role: option + runtime_default: 3 + schema: + type: number + - name: supplier_partial_base + description: Supplier Partial Base value accepted by the runtime. + required: false + role: option + runtime_default: 1 + schema: + type: number + - name: context_match_base + description: Context Match Base value accepted by the runtime. + required: false + role: option + runtime_default: 2 + schema: + type: number + - name: fuzzy_match_threshold + description: Fuzzy Match Threshold value accepted by the runtime. + required: false + role: option + runtime_default: 0.8 + schema: + type: number +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/compute.py + title: WranglesPY compute.score_search_results implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/compute/_sources/score-search-results.md + title: Existing compute.score_search_results Markdown +--- + +# Score Search Results + +Scores and filters search results based on progressive partial/exact matching. Can return dictionaries or a parallel list of formatted strings. + +## Migrated examples +#### Rank Part Search Results + +This template scores search results using supplier and part-code context. The fields added to each result dictionary depend on the scoring configuration. + +##### Recipe + +```yaml +wrangles: + - compute.score_search_results: + input: + - Search Results + - Suppliers + - Part Codes + output: + - Scored Results + allow_other_exact: true + must_match_part_code: true +``` + +
+ +
+ +##### Input Sample + +| Search Results | Suppliers | Part Codes | +| --- | --- | --- | +| `[{"title": "SKF 6202 bearing", "link": "https://example.com/6202"}]` | `["SKF"]` | `["6202"]` | + +
+ +
+ +##### Output Sample + +| Search Results | Suppliers | Part Codes | Scored Results | +| --- | --- | --- | --- | +| `[{"title": "SKF 6202 bearing", "link": "https://example.com/6202"}]` | `["SKF"]` | `["6202"]` | Ranked result dictionaries | + +
+ +
+ +_Template based on the documented parameters; no published source example is currently available._ diff --git a/wrangles-docs/static/registry/wrangles/convert/case.md b/wrangles-docs/static/registry/wrangles/convert/case.md new file mode 100644 index 0000000..2709ff6 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/convert/case.md @@ -0,0 +1,88 @@ +--- +schema_version: "0.1" +type: wrangle +id: 12ff4120-3613-4801-8653-99c793477fbc +wrangle_name: case +namespace: convert +title: Convert Case +description: Change the letter case of text values. +wrangle_key: convert.case +aliases: [] +slug: convert/case +status: active +visibility: public +tags: + - convert + - text + - case +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.convert.case + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + where: true + where_params: true + if: true +parameters: + - name: input + description: Name, index, or list of input columns. + required: true + role: column-selector + schema: + type: [string, integer, array] + items: + type: [string, integer] + - name: output + description: Name or list of output columns. If omitted, each input column is overwritten. + required: false + role: column-output + runtime_default: null + schema: + type: [string, array] + items: + type: string + - name: case + description: Letter case to apply. Sentence case lowercases the value and capitalizes sentence starts. + required: false + role: option + runtime_default: lower + schema: + type: string + enum: [lower, upper, title, sentence] +examples: + - id: uppercase-output + title: Write uppercase text to a new column + recipe: |- + wrangles: + - convert.case: + input: product + output: product_upper + case: upper + input_fixture: ../../fixtures/convert.case/uppercase-output.input.json + output_fixture: ../../fixtures/convert.case/uppercase-output.output.json + verification: static +sources: + - id: runtime + resource: https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/convert.py + title: WranglesPY convert.case implementation + - id: legacy-docs + resource: https://wrangles.io/python/recipes/wrangles/convert#case + title: Legacy convert.case documentation +--- + +# Convert Case + +Use `convert.case` to normalize capitalization while keeping the source column +or writing the result to a new column. + +## Behavior + +- Supported modes are `lower`, `upper`, `title`, and `sentence`. +- Omitting `output` overwrites the input column. +- Input and output lists must have equal lengths. +- Non-string values are passed through unchanged and produce a warning. diff --git a/wrangles-docs/static/registry/wrangles/convert/data-type.md b/wrangles-docs/static/registry/wrangles/convert/data-type.md new file mode 100644 index 0000000..c74839c --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/convert/data-type.md @@ -0,0 +1,98 @@ +--- +schema_version: "0.1" +type: wrangle +id: 52384f01-7164-404f-8615-063e7677a588 +wrangle_name: data_type +namespace: convert +title: Convert Data Type +description: Convert values to strings, numbers, booleans, or datetimes. +wrangle_key: convert.data_type +aliases: [] +slug: convert/data-type +status: active +visibility: public +tags: + - convert + - data-type + - validation +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.convert.data_type + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + where: true + where_params: true + if: true +parameters: + - name: input + description: Name, index, or list of input columns. + required: true + role: column-selector + schema: + type: [string, integer, array] + items: + type: [string, integer] + - name: output + description: Name or list of output columns. If omitted, each input column is overwritten. + required: false + role: column-output + runtime_default: null + schema: + type: [string, array] + items: + type: string + - name: data_type + description: Data type to produce. + required: false + role: option + runtime_default: str + schema: + type: string + enum: [str, float, int, bool, datetime] + - name: default + description: Value returned when conversion fails. If omitted, the original value is retained. + required: false + role: fallback-value + runtime_default: null + schema: + type: [string, number, array, object, boolean, "null"] +examples: + - id: integer-with-fallback + title: Convert quantities to integers with a fallback + recipe: |- + wrangles: + - convert.data_type: + input: quantity + output: quantity_integer + data_type: int + default: 0 + input_fixture: ../../fixtures/convert.data_type/integer-with-fallback.input.json + output_fixture: ../../fixtures/convert.data_type/integer-with-fallback.output.json + verification: static +sources: + - id: runtime + resource: https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/convert.py + title: WranglesPY convert.data_type implementation + - id: legacy-docs + resource: https://wrangles.io/python/recipes/wrangles/convert#data-type + title: Legacy convert.data_type documentation +--- + +# Convert Data Type + +Use `convert.data_type` when a recipe needs consistent Python-compatible +values rather than display-only formatting. + +## Behavior + +- Supported target types are `str`, `float`, `int`, `bool`, and `datetime`. +- Omitting `data_type` uses the runtime default `str`. +- Omitting `output` overwrites the input column. +- Failed conversions retain the original value unless `default` is supplied. +- Additional undocumented keyword arguments are implementation details and are + not part of the public Registry contract. diff --git a/wrangles-docs/static/registry/wrangles/convert/fraction-to-decimal.md b/wrangles-docs/static/registry/wrangles/convert/fraction-to-decimal.md new file mode 100644 index 0000000..69ef4a5 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/convert/fraction-to-decimal.md @@ -0,0 +1,110 @@ +--- +schema_version: '0.1' +type: wrangle +id: 7c55752e-70ab-4809-8298-c59436127457 +wrangle_name: fraction_to_decimal +namespace: convert +title: Fraction to Decimal +description: Convert fractions to decimals. +wrangle_key: convert.fraction_to_decimal +aliases: [] +slug: convert/fraction-to-decimal +status: active +visibility: public +tags: + - convert + - fraction-to-decimal +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.convert.fraction_to_decimal + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: decimals + description: Number of decimals to round fraction. + required: false + role: option + runtime_default: 4 + schema: + type: integer + - name: output + description: Name of the output colum. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/convert.py + title: WranglesPY convert.fraction_to_decimal implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/convert/_sources/fraction-to-decimal.md + title: Existing convert.fraction_to_decimal Markdown +--- + +# Fraction to Decimal + +Convert fractions to decimals. + +## Migrated examples +#### Converting a Column of Fractions to Decimals + +##### Recipe + +```yaml +wrangles: + - convert.fraction_to_decimal: + input: fractions + output: decimals + decimals: 3 +``` + +
+ +
+ +##### Input Sample + +| fractions | +| --- | +| 3/32 | +| 25/64 | + +
+ +
+ +##### Output Sample + +| decimals | +| --- | +| 0.094 | +| 0.391 | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/convert/from-json.md b/wrangles-docs/static/registry/wrangles/convert/from-json.md new file mode 100644 index 0000000..bed4ad6 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/convert/from-json.md @@ -0,0 +1,88 @@ +--- +schema_version: "0.1" +type: wrangle +id: e370dfcf-b0fe-4c48-8a52-6f34c47e7978 +wrangle_name: from_json +namespace: convert +title: Convert From JSON +description: Parse JSON text into lists, objects, scalars, booleans, or null values. +wrangle_key: convert.from_json +aliases: [] +slug: convert/from-json +status: active +visibility: public +tags: + - convert + - json + - structured-data +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.convert.from_json + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + where: true + where_params: true + if: true +parameters: + - name: input + description: Name, index, or list of columns containing valid JSON text. + required: true + role: column-selector + schema: + type: [string, integer, array] + items: + type: [string, integer] + - name: output + description: Name or list of output columns. If omitted, each input column is overwritten. + required: false + role: column-output + runtime_default: null + schema: + type: [string, array] + items: + type: string + - name: default + description: Value returned for empty or invalid JSON. A list may supply one fallback per input column. + required: false + role: fallback-value + runtime_default: null + schema: + type: [string, number, array, object, boolean, "null"] +examples: + - id: parse-structured-values + title: Parse JSON objects and lists + recipe: |- + wrangles: + - convert.from_json: + input: attributes_json + output: attributes + input_fixture: ../../fixtures/convert.from_json/parse-structured-values.input.json + output_fixture: ../../fixtures/convert.from_json/parse-structured-values.output.json + verification: static +sources: + - id: runtime + resource: https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/convert.py + title: WranglesPY convert.from_json implementation + - id: legacy-docs + resource: https://wrangles.io/python/recipes/wrangles/convert#from-json + title: Legacy convert.from_json documentation +--- + +# Convert From JSON + +Use `convert.from_json` when a column contains JSON text that later wrangles +need to treat as structured values. + +## Behavior + +- Each non-fallback value is parsed with Python's JSON parser. +- Omitting `output` overwrites the input column. +- Multiple input columns may share one fallback or use one fallback per input. +- Invalid JSON raises an error unless a non-null fallback is supplied. +- Permissive Python-literal or YAML-like parsing is outside this wrangle's + contract. diff --git a/wrangles-docs/static/registry/wrangles/convert/from-yaml.md b/wrangles-docs/static/registry/wrangles/convert/from-yaml.md new file mode 100644 index 0000000..8e56142 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/convert/from-yaml.md @@ -0,0 +1,124 @@ +--- +schema_version: '0.1' +type: wrangle +id: b1c20004-5f80-41c2-84d2-2d4601a033b5 +wrangle_name: from_yaml +namespace: convert +title: From YAML +description: Convert a YAML representation into an object. +wrangle_key: convert.from_yaml +aliases: [] +slug: convert/from-yaml +status: active +visibility: public +tags: + - convert + - from-yaml +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.convert.from_yaml + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output column. If omitted, the input column will be overwritten. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: default + description: >- + Value to return if the row is empty or fails to be parsed as YAML. If input is a list, default + may also be a list - either a single value to apply to all columns, or one value per input + column. + required: false + role: fallback-value + runtime_default: null + schema: + type: + - string + - array + - object + - number + - boolean + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/convert.py + title: WranglesPY convert.from_yaml implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/convert/_sources/from-yaml.md + title: Existing convert.from_yaml Markdown +--- + +# From YAML + +Convert a YAML representation into an object. + +## Migrated examples +#### Convert YAML To An Object + +##### Recipe + +```yaml +wrangles: + - convert.from_yaml: + input: column 1 +``` + +
+ +
+ +##### Input Sample + +```yaml +Product Specs: + length: 6 inch + voltage: 24V + weight: 3lb +``` + +
+ +
+ +##### Output Sample + +```python +{ + 'Product Specs': { + 'length': '6 inch', + 'voltage': '24V', + 'weight': '3lb' + } +} +``` + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/convert/to-json.md b/wrangles-docs/static/registry/wrangles/convert/to-json.md new file mode 100644 index 0000000..856dc5c --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/convert/to-json.md @@ -0,0 +1,130 @@ +--- +schema_version: '0.1' +type: wrangle +id: 94e54eb7-2b8c-4047-89d0-fb5d16baf396 +wrangle_name: to_json +namespace: convert +title: To JSON +description: Convert an object to a JSON representation. +wrangle_key: convert.to_json +aliases: [] +slug: convert/to-json +status: active +visibility: public +tags: + - convert + - to-json +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.convert.to_json + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output column. If omitted, the input column will be overwritten. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: ensure_ascii + description: If true, non-ASCII characters will be escaped. Default is false. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: indent + description: >- + If indent is a non-negative integer or string, then JSON array elements and object members + will be pretty-printed with that indent level. An indent level of 0, negative, or "" will only + insert newlines. None (the default) selects the most compact representation. Using a positive + integer indent indents that many spaces per level. If indent is a string (such as '\t'), that + string is used to indent each level. + required: false + role: option + schema: + type: + - string + - integer + - name: sort_keys + description: >- + If sort_keys is true (defaults to False), then the output of dictionaries will be sorted by + key. + required: false + role: option + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/convert.py + title: WranglesPY convert.to_json implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/convert/_sources/to-json.md + title: Existing convert.to_json Markdown +--- + +# To JSON + +Convert an object to a JSON representation. + +## Migrated examples +#### Convert Text to JSON + +##### Recipe + +```yaml +wrangles: + - convert.to_json: + input: column + output: new column +``` + +
+ +
+ +##### Input Sample + +| column | +| --- | +| `['a', 'python', 'list']` | +| `{'python': 'dict'}` | + +
+ +
+ +##### Output Sample + +| new column | +| --- | +| `["a","python","list"]` | +| `{"python":"dict"}` | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/convert/to-yaml.md b/wrangles-docs/static/registry/wrangles/convert/to-yaml.md new file mode 100644 index 0000000..003a7e9 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/convert/to-yaml.md @@ -0,0 +1,129 @@ +--- +schema_version: '0.1' +type: wrangle +id: 4cd6252f-ce47-4a9d-8272-3d87e875b72a +wrangle_name: to_yaml +namespace: convert +title: To YAML +description: Convert an object to a YAML representation. +wrangle_key: convert.to_yaml +aliases: [] +slug: convert/to-yaml +status: active +visibility: public +tags: + - convert + - to-yaml +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.convert.to_yaml + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output column. If omitted, the input column will be overwritten. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: sort_keys + description: 'If sort_keys is true (default: False), then the output of dictionaries will be sorted by key.' + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: allow_unicode + description: Allow Unicode value accepted by the runtime. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: indent + description: Specify the number of spaces for indentation to specify nested elements. + required: false + role: option + schema: + type: integer +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/convert.py + title: WranglesPY convert.to_yaml implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/convert/_sources/to-yaml.md + title: Existing convert.to_yaml Markdown +--- + +# To YAML + +Convert an object to a YAML representation. + +## Migrated examples +#### Convert a Dictionary to YAML + +##### Recipe + +```yaml +wrangles: + - convert.to_yaml: + input: column 1 + indent: 2 +``` + +
+ +
+ +##### Input Sample + +```python +{ + 'Product Specs': { + 'length': '6 inch', + 'voltage': '24V', + 'weight': '3lb' + } +} +``` + +
+ +
+ +##### Output Sample + +```yaml +Product Specs: + length: 6 inch + voltage: 24V + weight: 3lb +``` + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/create/bins.md b/wrangles-docs/static/registry/wrangles/create/bins.md new file mode 100644 index 0000000..d4fce38 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/create/bins.md @@ -0,0 +1,178 @@ +--- +schema_version: '0.1' +type: wrangle +id: 232e3ba0-4735-4934-88aa-0163181abb3f +wrangle_name: bins +namespace: create +title: Bins +description: Create a column that groups data into bins. +wrangle_key: create.bins +aliases: [] +slug: create/bins +status: active +visibility: public +tags: + - create + - bins +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.create.bins + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of new column. + required: true + role: column-output + schema: + type: + - string + - array + - name: bins + description: Defines the number of equal-width bins in the range. + required: true + role: option + schema: + type: + - integer + - array + - name: labels + description: Labels for the returned bins. + required: false + role: option + runtime_default: null + schema: + type: + - string + - array + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py + title: WranglesPY create.bins implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/bins.md + title: Existing create.bins Markdown +--- + +# Bins + +Creates a column that segments and sorts data values into bins. `bins` can be an integer or a list. When `bins` is an integer, the input data is split equally into that number of bins. When `bins` is a list, the input data is split based on the list boundaries. + +## Migrated examples +#### Creating Bins With an Integer + +##### Recipe + +```yaml +wrangles: + - create.bins: + input: Data + output: Category + bins: 3 + labels: + - Bad + - Medium + - Good +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Data | Category | +| --- | --- | +| 1 | Bad | +| 7 | Good | +| 5 | Medium | +| 4 | Medium | +| 6 | Good | +| 3 | Bad | + +
+ +
+ +#### Creating Bins With a List + +##### Recipe + +```yaml +wrangles: + - create.bins: + input: Grades + output: Letter Grade + bins: + - 0 + - 60 + - 70 + - 80 + - 90 + - 100 + labels: + - F + - D + - C + - B + - A +``` + +
+ +
+ +##### Input Sample + +| Grade | Student | +| --- | --- | +| 64 | Charles | +| 92 | Sabrina | +| 76 | Edward | +| 84 | Wendy | + +
+ +
+ +##### Output Sample + +| Grade | Student | Letter Grade | +| --- | --- | --- | +| 64 | Charles | D | +| 92 | Sabrina | A | +| 76 | Edward | C | +| 84 | Wendy | B | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/create/column.md b/wrangles-docs/static/registry/wrangles/create/column.md new file mode 100644 index 0000000..396dc5c --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/create/column.md @@ -0,0 +1,222 @@ +--- +schema_version: '0.1' +type: wrangle +id: 5a18e2c8-ec7c-45f5-88fd-bb5c358a8b40 +wrangle_name: column +namespace: create +title: Column +description: Create column(s) with a user defined value. Defaults to None (empty). +wrangle_key: create.column +aliases: [] +slug: create/column +status: active +visibility: public +tags: + - create + - column +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.create.column + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: output + description: 'Name or list of names of new columns or column_name: value pairs.' + required: true + role: column-output + schema: + type: + - string + - array + - name: value + description: >- + (Optional) Value(s) to add in the new column(s). If using a dictionary in output, value can + only be a string. + required: false + role: option + runtime_default: null + schema: + type: + - string + - number + - object + - array + - boolean + - 'null' + - name: value_if_exists + description: >- + Determines behaviour when the output column already exists. existing (default): leave the + column unchanged. coalesce: fill empty/null cells with the new value, keeping non-null cells. + new: overwrite the entire column with the new value. + required: false + role: option + runtime_default: existing + schema: + type: string + enum: + - existing + - coalesce + - new + - name: coalesce_value + description: >- + Only used when value_if_exists is coalesce. Determines which side is preferred when both the + existing and new values are non-empty. existing (default): keep the existing value, only fill + empty/null cells with the new value. new: keep the new value, only fall back to the existing + value where the new value is empty/null. + required: false + role: option + runtime_default: existing + schema: + type: string + enum: + - existing + - new +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py + title: WranglesPY create.column implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/column.md + title: Existing create.column Markdown +--- + +# Column + +Create column(s) with a user defined value. Defaults to `None` (empty). If you need to copy an existing column, use the copy wrangle instead. + +## Migrated examples +#### Creating a New Column + +##### Recipe + +```yaml +wrangles: + - create.column: + output: New Column + value: new value # Optional, otherwise empty + where: column > 1 +``` + +
+ +
+ +##### Input Sample + +| column | +| --- | +| 1 | +| 2 | +| 3 | + +
+ +
+ +##### Output Sample + +| column | New Column | +| --- | --- | +| 1 | | +| 2 | new value | +| 3 | new value | + +
+ +
+ +#### Creating Multiple Columns + +##### Recipe + +```yaml +wrangles: + - create.column: + output: + - New Column 1: new value 1 # Optional, otherwise empty + - New Column 2: new value 2 + - New Column 3: new value 1 +``` + +
+ +
+ +##### Input Sample + +| column | +| --- | +| 1 | +| 2 | +| 3 | + +
+ +
+ +##### Output Sample + +| column | New Column 1 | New Column 2 | New Column 3 | +| --- | --- | --- | --- | +| 1 | new value 1 | new value 2 | new value 1 | +| 2 | new value 1 | new value 2 | new value 1 | +| 3 | new value 1 | new value 2 | new value 1 | + +
+ +
+ +#### Creating Columns That Consist of Lists + +##### Recipe + +```yaml +wrangles: + - create.column: + output: + - New Column: + - 4 + - 5 + - 6 +``` + +
+ +
+ +##### Input Sample + +| column | +| --- | +| 1 | +| 2 | +| 3 | + +
+ +
+ +##### Output Sample + +| column | New Column | +| --- | --- | +| 1 | [4, 5, 6] | +| 2 | [4, 5, 6] | +| 3 | [4, 5, 6] | + +
+ +
+ +Columns of empty lists can also be created by passing an empty list (`[]`) as the column value. diff --git a/wrangles-docs/static/registry/wrangles/create/embeddings.md b/wrangles-docs/static/registry/wrangles/create/embeddings.md new file mode 100644 index 0000000..da187e7 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/create/embeddings.md @@ -0,0 +1,203 @@ +--- +schema_version: '0.1' +type: wrangle +id: e3518afd-a819-40ec-8b49-eb25690220c1 +wrangle_name: embeddings +namespace: create +title: Embeddings +description: Create an embedding based on text input. +wrangle_key: create.embeddings +aliases: [] +slug: create/embeddings +status: active +visibility: public +tags: + - create + - embeddings +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.create.embeddings + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: The column of text to create the embeddings for. + required: true + role: column-selector + schema: + type: string + - name: api_key + description: The API key. + required: true + role: credential + schema: + type: string + - name: output + description: The output column the embeddings will be saved as. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - 'null' + - name: batch_size + description: The number of rows to submit per individual request. + required: false + role: option + runtime_default: 100 + schema: + type: integer + - name: threads + description: >- + The number of requests to submit in parallel. Each request contains the number of rows set as + batch_size. + required: false + role: option + runtime_default: 10 + schema: + type: integer + - name: output_type + description: Output the embeddings as a numpy array or a python list Default - python list. + required: false + role: column-output + runtime_default: python list + schema: + type: string + enum: + - numpy array + - python list + - name: model + description: The specific model to use to generate the embeddings. + required: false + role: option + runtime_default: text-embedding-3-small + schema: + type: string + - name: retries + description: >- + The number of times to retry if the request fails. This will apply exponential backoff to help + with rate limiting. + required: false + role: option + runtime_default: 0 + schema: + type: integer + - name: url + description: >- + The endpoint to send embedding requests to. Defaults to the standard endpoint for the resolved + provider. Setting a Jina URL without an explicit provider will automatically use Jina's + request/response format. + required: false + role: option + runtime_default: https://api.openai.com/v1/embeddings + schema: + type: string + - name: precision + description: >- + The precision of the embeddings. Default is float32. This should be used with output_type + numpy array. + required: false + role: option + runtime_default: float32 + schema: + type: string + enum: + - float16 + - float32 + - name: provider + description: >- + Controls the request/response format for the embedding API. When omitted, inferred from url + (jina.ai → jina, otherwise openai). Setting provider also sets the default url for that + provider, so you only need one of provider or url for standard endpoints. Use both together + only when pointing to a custom endpoint that uses a non-default provider's API format (e.g. a + Jina-compatible proxy). + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + enum: + - openai + - jina + - name: task + description: >- + The task type for the embedding model. Only applicable for the Jina provider. Selects the + appropriate task-specific adapter. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + enum: + - retrieval.query + - retrieval.passage + - text-matching + - classification + - separation +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py + title: WranglesPY create.embeddings implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/embeddings.md + title: Existing create.embeddings Markdown +--- + +# Embeddings + +Create an embedding based on text input. + +## Migrated examples +#### Creating Embeddings + +##### Recipe + +```yaml +wrangles: + - create.embeddings: + input: my_column + api_key: ${my_key} + output: embeddings +``` + +
+ +
+ +##### Input Sample + +| my_column | +| --- | +| angle grinder | +| jig saw | + +
+ +
+ +##### Output Sample + +| my_column | embeddings | +| --- | --- | +| angle grinder | [0.010793785, -0.010007165, 0.0028609, -0.0139...] | +| jig saw | [-0.008975127, 0.009314879, -0.024150735, -0.0...] | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/create/guid.md b/wrangles-docs/static/registry/wrangles/create/guid.md new file mode 100644 index 0000000..59d51d7 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/create/guid.md @@ -0,0 +1,92 @@ +--- +schema_version: '0.1' +type: wrangle +id: cf3aaab2-3d5b-4c9b-826e-7af7510521c9 +wrangle_name: guid +namespace: create +title: GUID +description: Create column(s) with a GUID. +wrangle_key: create.guid +aliases: [] +slug: create/guid +status: active +visibility: public +tags: + - create + - guid +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.create.guid + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: output + description: Name or list of names of new columns. + required: true + role: column-output + schema: + type: + - string + - array +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py + title: WranglesPY create.guid implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/guid.md + title: Existing create.guid Markdown +--- + +# GUID + +Create a column with a GUID (Globally Unique Identifier). + +## Migrated examples +#### Creating a New GUID Column + +##### Recipe + +```yaml +wrangles: + - create.guid: + output: GUID Column + + # OR + + - create.uuid: + output: GUID Column +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| GUID Column | +| --- | +| 9a13b4dd-1993-4bd2-8974-3f9a0f006d86 | +| 1528d918-ecd7-457c-b44d-3d30705696d3 | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/create/hash.md b/wrangles-docs/static/registry/wrangles/create/hash.md new file mode 100644 index 0000000..8dd0da6 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/create/hash.md @@ -0,0 +1,113 @@ +--- +schema_version: '0.1' +type: wrangle +id: 11e8fc13-00d2-4779-8d87-6288b07de7e7 +wrangle_name: hash +namespace: create +title: Hash +description: Create a hash of a column. +wrangle_key: create.hash +aliases: [] +slug: create/hash +status: active +visibility: public +tags: + - create + - hash +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.create.hash + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of new column. + required: true + role: column-output + schema: + type: + - string + - array + - name: method + description: 'The method to use to hash the input (Default: md5).' + required: false + role: option + runtime_default: md5 + schema: + type: string + enum: + - md5 + - sha1 + - sha256 + - sha512 +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py + title: WranglesPY create.hash implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/hash.md + title: Existing create.hash Markdown +--- + +# Hash + +Create a hash of a column. + +## Migrated examples +#### Creating a New Hash Column + +##### Recipe + +```yaml +wrangles: + - create.hash: + input: Description + output: hash + method: md5 +``` + +
+ +
+ +##### Input Sample + +| Description | +| --- | +| The wrench is blue | +| The hammer is yellow | + +
+ +
+ +##### Output Sample + +| New Column | +| --- | +| ce114e4501d2f4e2dcea3e17b546f339 | +| a54d88e06612d820bc3be72877c74f257b561b19 | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/create/index.md b/wrangles-docs/static/registry/wrangles/create/index.md new file mode 100644 index 0000000..53f05c1 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/create/index.md @@ -0,0 +1,113 @@ +--- +schema_version: '0.1' +type: wrangle +id: 0a4909ca-6e14-4da7-8a70-a7fd106d6944 +wrangle_name: index +namespace: create +title: Index +description: Create column(s) with an incremental index. e.g. 1,2,3... +wrangle_key: create.index +aliases: [] +slug: create/index +status: active +visibility: public +tags: + - create + - index +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.create.index + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: output + description: Name or list of names of new columns. + required: true + role: column-output + schema: + type: + - string + - array + - name: start + description: (Optional; default 1) Starting number for the index. + required: false + role: option + runtime_default: 1 + schema: + type: integer + - name: step + description: (Optional; default 1) Step between successive rows. + required: false + role: option + runtime_default: 1 + schema: + type: integer + - name: by + description: Optional. Cluster the created indexes by one or more columns. + required: false + role: column-selector + runtime_default: null + schema: + type: + - string + - array + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py + title: WranglesPY create.index implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/index.md + title: Existing create.index Markdown +--- + +# Index + +Create a new incremental index. + +## Migrated examples +#### Creating a New Index Column + +##### Recipe + +```yaml +wrangles: + - create.index: + output: New Index + start: 1 # optional + step: 1 # optional +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| New Index | +| --- | +| 1 | +| 2 | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/create/jinja.md b/wrangles-docs/static/registry/wrangles/create/jinja.md new file mode 100644 index 0000000..219cac8 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/create/jinja.md @@ -0,0 +1,125 @@ +--- +schema_version: '0.1' +type: wrangle +id: 10fc6709-16d4-4eab-8f56-6cb5d170ea66 +wrangle_name: jinja +namespace: create +title: Jinja +description: Output text using a jinja template. +wrangle_key: create.jinja +aliases: [] +slug: create/jinja +status: active +visibility: public +tags: + - create + - jinja +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.create.jinja + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: template + description: >- + A dictionary which defines the template/location as well as the form which the template is + input. If any keys use a space, they must be replaced with an underscore. Note: spaces within + column names are replaced by underscores (_). + required: true + role: option + schema: + type: object + additionalProperties: false + properties: + file: + type: string + column: + type: string + string: + type: string + - name: output + description: Name of the column to be output to. + required: true + role: column-output + schema: + type: array + - name: input + description: >- + Specify a name of column containing a dictionary of elements to be used in jinja template. + Otherwise, the column headers will be used as keys. + required: false + role: column-selector + runtime_default: null + schema: + type: + - string + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py + title: WranglesPY create.jinja implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/jinja.md + title: Existing create.jinja Markdown +--- + +# Jinja + +Makes use of a Jinja template to create a description, title, or summary based on your data. + +:::info +Jinja templates do not allow variables with spaces. This wrangle automatically replaces spaces in column headers with underscores, so use underscores instead of spaces when referencing columns in the template. +::: + +## Migrated examples +#### Creating a Jinja Description + +##### Recipe + +```yaml +wrangles: + - create.jinja: + output: Description + template: + string: | + This is a {{ Brand }} {{ Item_Type }} that is {{ Size }} +``` + +
+ +
+ +##### Input Sample + +| Size | Brand | Item Type | +| --- | --- | --- | +| 10mm | SKF | ball bearing | +| 15mm | Timken | bearing seal | + +
+ +
+ +##### Output Sample + +| Size | Brand | Item Type | Description | +| --- | --- | --- | --- | +| 10mm | SKF | ball bearing | This is a SKF ball bearing that is 10mm | +| 15mm | Timken | bearing seal | This is a Timken bearing seal that is 15mm | + +
+ +
+ +Using `|` in YAML denotes a multi-line string that preserves line breaks. Use `>` for a multi-line string when line breaks should not be preserved. diff --git a/wrangles-docs/static/registry/wrangles/create/uuid.md b/wrangles-docs/static/registry/wrangles/create/uuid.md new file mode 100644 index 0000000..0e64405 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/create/uuid.md @@ -0,0 +1,92 @@ +--- +schema_version: '0.1' +type: wrangle +id: c376f3ff-2283-4c4c-8d7f-70db6f53ed19 +wrangle_name: uuid +namespace: create +title: UUID +description: Create column(s) with a UUID. +wrangle_key: create.uuid +aliases: [] +slug: create/uuid +status: active +visibility: public +tags: + - create + - uuid +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.create.uuid + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: output + description: Name or list of names of new columns. + required: true + role: column-output + schema: + type: + - string + - array +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/create.py + title: WranglesPY create.uuid implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/create/_sources/uuid.md + title: Existing create.uuid Markdown +--- + +# UUID + +Create a column with a UUID (Universally Unique Identifier). + +## Migrated examples +#### Creating a New GUID Column + +##### Recipe + +```yaml +wrangles: + - create.guid: + output: GUID Column + + # OR + + - create.uuid: + output: GUID Column +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| GUID Column | +| --- | +| 9a13b4dd-1993-4bd2-8974-3f9a0f006d86 | +| 1528d918-ecd7-457c-b44d-3d30705696d3 | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/extract/address.md b/wrangles-docs/static/registry/wrangles/extract/address.md new file mode 100644 index 0000000..89b1da8 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/extract/address.md @@ -0,0 +1,130 @@ +--- +schema_version: '0.1' +type: wrangle +id: 44153f95-4581-4cee-898e-b3b4714045fd +wrangle_name: address +namespace: extract +title: Address +description: Extract parts of addresses. Requires WrangleWorks Account. +wrangle_key: extract.address +aliases: [] +slug: extract/address +status: active +visibility: public +tags: + - extract + - address +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.extract.address + contract_status: verified +access: + ai_powered: false + requires_account: true + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output column. + required: true + role: column-output + schema: + type: + - string + - array + - name: dataType + description: Specific part of the address to extract. + required: true + role: option + schema: + type: string + enum: + - streets + - cities + - regions + - countries + - name: output_format + description: Format of the extract output. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - 'null' + enum: + - list + - columns + - concatenate + - name: char + description: Character to use when output_format is concatenate. + required: false + role: option + runtime_default: ', ' + schema: + type: string +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py + title: WranglesPY extract.address implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/address.md + title: Existing extract.address Markdown +--- + +# Address + +Extract geographical information from unstructured text such as streets, cities, or countries. Requires WrangleWorks Account. + +## Migrated examples +#### Extracting Street Name + +##### Recipe + +```yaml +wrangles: + - extract.address: + input: Location + output: Street + dataType: streets + where: SUBSTRING(Location, 1, 3) = '221' +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Street | Location | +| --- | --- | +| ['221 B Baker St.'] | 221 B Baker St., London, England, United Kingdom | +| | London SW1A 1AA, London, England, United Kingdom | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/extract/ai.md b/wrangles-docs/static/registry/wrangles/extract/ai.md new file mode 100644 index 0000000..41ef1a3 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/extract/ai.md @@ -0,0 +1,515 @@ +--- +schema_version: '0.1' +type: wrangle +id: d9f89b00-fda3-4f4c-826c-6417b9390607 +wrangle_name: ai +namespace: extract +title: AI +description: >- + Extract structured data from each input row using an AI model. Define the desired fields with + output, or reuse a saved definition with model_id. +wrangle_key: extract.ai +aliases: [] +slug: extract/ai +status: active +visibility: public +tags: + - ai + - extract +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.extract.ai + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: api_key + description: OpenAI API key used for this wrangle, normally supplied through a recipe variable. + required: true + role: credential + schema: + type: string + - name: input + description: >- + Input column name, column index, or list of columns supplied together as DATA for each row. If + omitted, all dataframe columns are supplied. + required: false + role: column-selector + runtime_default: null + schema: + type: + - array + - 'null' + items: + type: + - string + - integer + - name: output + description: >- + Desired extraction. Use an object keyed by output column name for structured fields, a string + for one prompted value, or an array of field names/definitions. Each field may use the schema + options below. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - object + - 'null' + patternProperties: + ^[a-zA-Z0-9 _-]+$: + type: + - object + - string + properties: + type: + type: string + description: >- + JSON data type required for this field. If omitted, common scalar types are + accepted. Fields allow null by default. + enum: + - string + - number + - integer + - boolean + - 'null' + - object + - array + enum: + type: array + examples: + type: + - array + - object + - string + - number + - integer + - boolean + - 'null' + properties: + name: + type: string + notes: + type: string + input: {} + output: {} + items: + anyOf: + - type: object + required: + - input + - output + properties: + name: + type: string + notes: + type: string + input: {} + output: {} + - {} + properties: + type: + - object + - array + - string + required: + type: + - array + - string + additionalProperties: + type: + - boolean + - object + items: + type: object + nullable: + type: boolean + - name: model_id + description: >- + ID of a saved extract.ai definition. Use it instead of defining an output schema. When output + is also supplied with model_id in a recipe, output names the destination column or columns for + the saved fields. + required: false + role: model-reference + runtime_default: null + schema: + type: + - string + - 'null' + - name: record_examples + description: >- + Whole-record examples. Each example has a separate input value or record and the complete + expected output record. Optional name and notes provide model-visible context. Use {name: ..., + notes: ..., input: ..., output: ...}. Omitted nullable output fields are completed with null. + Required non-null nested properties must be supplied. This differs from examples nested under + one output field, which teach only that field. + required: false + role: option + runtime_default: null + schema: + type: + - array + - object + - 'null' + required: + - input + - output + properties: + name: + type: string + notes: + type: string + input: {} + output: {} + items: + type: object + required: + - input + - output + properties: + name: + type: string + notes: + type: string + input: {} + output: {} + - name: output_format + description: >- + How extracted fields are written. columns writes one dataframe column per field (default); + dictionary keeps one object; concatenate joins fields into one string using char. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - 'null' + enum: + - dictionary + - columns + - concatenate + - name: char + description: Separator used only when output_format is concatenate. Defaults to comma-space. + required: false + role: option + runtime_default: ', ' + schema: + type: string + - name: web_search + description: >- + Enable OpenAI Responses web search; the model decides when searching helps. When true, every + row also receives web_search_sources: a deduplicated list of {title, url} objects in source + order, or an empty list when no source was used. This reserved column is automatic. Requires + protocol responses. Defaults to false. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: instructions + description: >- + Additional guidance applied to every input row. Use this for decision rules, evidence + priorities, normalization requirements, or other behavior that applies to the complete + extraction. + required: false + role: option + runtime_default: null + schema: + type: + - string + - array + - 'null' + items: + type: string + - name: model + description: >- + OpenAI model ID for this call. If omitted, uses the configured extract.ai default; a saved + model definition may supply its own model. + required: false + role: option + schema: + type: string + - name: threads + description: Maximum number of row-level requests sent in parallel. The configured default is 32. + required: false + role: option + schema: + type: integer + minimum: 1 + - name: timeout + description: >- + Maximum seconds for one HTTP attempt. The configured default is 12; deadline can end the + overall call sooner. + required: false + role: option + schema: + type: number + exclusiveMinimum: 0 + - name: retries + description: >- + Number of additional attempts after a retryable failure. The configured default is 1. Backoff + and request timeouts remain bounded by deadline. + required: false + role: option + schema: + type: integer + minimum: 0 + - name: url + description: >- + Override the endpoint for the selected protocol. A chat/completions URL selects the legacy + protocol only when protocol is omitted; new recipes should use the configured Responses + endpoint. + required: false + role: option + schema: + type: string + - name: provider + description: AI service provider. Currently only OpenAI is supported. + required: false + role: option + schema: + type: string + enum: + - openai + - name: protocol + description: >- + OpenAI API protocol. Responses is the configured default and is required for web_search; + chat_completions remains available for legacy definitions. + required: false + role: option + schema: + type: string + enum: + - responses + - chat_completions + - name: deadline + description: >- + Total seconds allowed for the entire wrangle call, including queued work, retries, and + backoff. The configured default is 15. + required: false + role: option + schema: + type: number + exclusiveMinimum: 0 + - name: store + description: Whether OpenAI may store Responses API results. Defaults to false. + required: false + role: option + schema: + type: boolean + - name: cache + description: >- + Reuse identical successful results from the bounded warm-instance cache. Defaults to true. Set + false when fresh model or web results are required. + required: false + role: option + schema: + type: boolean + - name: cache_ttl + description: >- + Maximum age in seconds for a cached result used by this call. Applies to extracted values and + web_search_sources together. + required: false + role: option + schema: + type: number + exclusiveMinimum: 0 + - name: strict + description: >- + Require OpenAI structured-output strict mode. Defaults to true. Definitions with dynamic + dictionary keys automatically switch to non-strict provider mode and are still validated + locally. + required: false + role: option + schema: + type: boolean + - name: reasoning + description: >- + Responses API reasoning controls. Set effort for reasoning-capable models. The configured + default is none when that model supports it; otherwise the provider default applies. + required: false + role: option + schema: + type: object + properties: + effort: + type: string + enum: + - none + - minimal + - low + - medium + - high + - xhigh + - name: verbosity + description: >- + Responses API text verbosity for compatible models. Defaults to low when supported; ignored + with a warning for incompatible models. + required: false + role: option + schema: + type: string + enum: + - low + - medium + - high +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py + title: WranglesPY extract.ai implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/ai.md + title: Existing extract.ai Markdown +--- + +# AI + +Use AI to extract meaningful structured data. `extract.ai` can be used recipe-first, where the output schema is defined in the recipe, or model-first, where a saved extract.ai model is called by `model_id`. + +:::info +For saved extract.ai models, this is the preferred calling pattern compared with using `extract.custom`. +::: + +## Migrated examples +#### Making Use of Output Parameters + +##### Recipe + +```yaml +wrangles: + - extract.ai: + api_key: Your OpenAI api key + input: Product Specs + output: + Blade Diameter: + type: number + description: The diameter of the blade used, reported in inches. + default: N/A + examples: + - 4.5" + - 8 inch + Max. RPM: + type: number + description: The maximum rotations per minute (rpm). + default: 3600 + examples: + - 3600 max. rpm +``` + +
+ +
+ +##### Input Sample + +| Product Specs | +| --- | +| 18V Cordless 4.5in angle grinder | +| 120V 12in chop saw 3600 max. rpm | + +
+ +
+ +##### Output Sample + +| Blade Diameter | Max. RPM | +| --- | --- | +| 4.5 inches | | +| 12 inches | 3600 | + +
+ +
+ +#### Description Only + +##### Recipe + +```yaml +wrangles: + - extract.ai: + api_key: Your OpenAI api key + input: Product Specs + output: + Blade Diameter: The diameter of the blade used, reported in inches. + Max. RPM: The maximum rotations per minute (rpm). +``` + +
+ +
+ +##### Input Sample + +| Product Specs | +| --- | +| 18V Cordless 4.5in angle grinder | +| 120V 12in chop saw 3600 max. rpm | + +
+ +
+ +##### Output Sample + +| Blade Diameter | Max. RPM | +| --- | --- | +| 4.5 inches | | +| 12 inches | 3600 | + +
+ +
+ +#### Model Based Column Output by Name + +##### Recipe + +```yaml +wrangles: + - extract.ai: + api_key: Your OpenAI api key + model_id: xxxx-xxxx-xxxxxxxx + output: + - Colors + - Sizes +``` + +
+ +
+ +##### Input Sample + +| Items | +| --- | +| Large yellow square | +| Medium orange triangle | + +
+ +
+ +##### Output Sample + +| Colors | Sizes | +| --- | --- | +| [yellow] | Large | +| [orange] | Medium | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/extract/attributes.md b/wrangles-docs/static/registry/wrangles/extract/attributes.md new file mode 100644 index 0000000..3bb2db0 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/extract/attributes.md @@ -0,0 +1,261 @@ +--- +schema_version: '0.1' +type: wrangle +id: 03ccedef-c938-41f1-8980-280f1a91542e +wrangle_name: attributes +namespace: extract +title: Attributes +description: >- + Extract numeric attributes from the input such as weights or lengths. Requires WrangleWorks + Account. +wrangle_key: extract.attributes +aliases: [] +slug: extract/attributes +status: active +visibility: public +tags: + - extract + - attributes +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.extract.attributes + contract_status: verified +access: + ai_powered: false + requires_account: true + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output column. + required: true + role: column-output + schema: + type: + - string + - array + - name: responseContent + description: Span - returns the text found. object - returns an object with the value and unit. + required: false + role: option + runtime_default: span + schema: + type: string + enum: + - span + - object + - name: attribute_type + description: Request only a specific type of attribute. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + enum: + - angle + - area + - capacitance + - charge + - current + - data transfer rate + - electrical conductance + - electrical resistance + - energy + - force + - frequency + - inductance + - instance frequency + - length + - luminous flux + - weight + - power + - pressure + - speed + - velocity + - temperature + - time + - voltage + - volume + - volumetric flow + - name: desired_unit + description: Convert the extracted unit to the desired unit. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + - name: bound + description: >- + When returning an object, if the input is a range (e.g. 10-20mm) set the value to return. min, + mid or max. Default mid. + required: false + role: option + runtime_default: mid + schema: + type: string + enum: + - min + - mid + - max + - name: first_element + description: Get the first element from results. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: output_format + description: Format of the extract output. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - 'null' + enum: + - list + - dictionary + - columns + - concatenate + - name: char + description: Character to use when output_format is concatenate. + required: false + role: option + runtime_default: ', ' + schema: + type: string +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py + title: WranglesPY extract.attributes implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/attributes.md + title: Existing extract.attributes Markdown +--- + +# Attributes + +Extract numeric attributes from unstructured text such as lengths, voltages, weights, or temperatures. Requires WrangleWorks Account. + +## Migrated examples +#### Extracting All Attributes + +##### Recipe + +```yaml +wrangles: + - extract.attributes: + input: tools + output: attributes + responseContent: span +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Tools (input) | Attributes (span )(output) | +| --- | --- | +| hammer 5kg, 0.5m | \{'length': ['0.5m'], 'mass': ['5kg']\} | + +
+ +
+ +#### Extracting All Attributes + +##### Recipe + +```yaml +wrangles: + - extract.attributes: + input: tools + output: attributes + responseContent: object +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Tools (input) | Attributes (Object) (output) | +| --- | --- | +| hammer 5kg, 0.5m | \{'length': [\{'unit': 'metre', 'value': 0.5\}], 'mass': [\{'unit': 'kilogram', 'value': 5.0\}]\} | + +
+ +
+ +#### Extracting Specific Attributes + +##### Recipe + +```yaml +wrangles: + - extract.attributes: + input: Tools + output: attributes + responseContent: span + attribute_type: mass # Specific attributes +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +_No sample available._ + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/extract/brackets.md b/wrangles-docs/static/registry/wrangles/extract/brackets.md new file mode 100644 index 0000000..03b9f40 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/extract/brackets.md @@ -0,0 +1,137 @@ +--- +schema_version: '0.1' +type: wrangle +id: 9b4c15fa-2aaa-40c8-8834-6e835760bee5 +wrangle_name: brackets +namespace: extract +title: Brackets +description: Extract text properties in brackets from the input. +wrangle_key: extract.brackets +aliases: [] +slug: extract/brackets +status: active +visibility: public +tags: + - extract + - brackets +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.extract.brackets + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output columns. + required: true + role: column-output + schema: + type: + - string + - array + - name: find + description: >- + (Optional) The type of brackets to find (round '()', square '[]', curly '{}', angled '<>'). + Default is all brackets. + required: false + role: option + runtime_default: all + schema: + type: + - string + - array + - name: include_brackets + description: (Optional) Include the brackets in the output. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: output_format + description: Format of the extract output. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - 'null' + enum: + - list + - columns + - concatenate + - name: char + description: Character to use when output_format is concatenate. + required: false + role: option + runtime_default: ', ' + schema: + type: string +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py + title: WranglesPY extract.brackets implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/brackets.md + title: Existing extract.brackets Markdown +--- + +# Brackets + +Extract text in brackets from the input. + +## Migrated examples +#### Extracting Data Within Brackets + +##### Recipe + +```yaml +wrangles: + - extract.brackets: + input: Data + output: Output +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Data | Output | +| --- | --- | +| `{Hello}` | Hello | +| `[Wrangles]` | Wrangles | +| `(!)` | ! | +| `` | ! | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/extract/codes.md b/wrangles-docs/static/registry/wrangles/extract/codes.md new file mode 100644 index 0000000..7a8fb3b --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/extract/codes.md @@ -0,0 +1,219 @@ +--- +schema_version: '0.1' +type: wrangle +id: da591387-0fca-4842-8bcb-d19f561f0292 +wrangle_name: codes +namespace: extract +title: Codes +description: Extract alphanumeric codes from the input. Requires WrangleWorks Account. +wrangle_key: extract.codes +aliases: [] +slug: extract/codes +status: active +visibility: public +tags: + - extract + - codes +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.extract.codes + contract_status: verified +access: + ai_powered: false + requires_account: true + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name or list of input columns. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name or list of output columns. + required: true + role: column-output + schema: + type: + - string + - array + - name: first_element + description: Get the first element from results. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: output_format + description: Format of the extract output. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - 'null' + enum: + - list + - columns + - concatenate + - name: char + description: Character to use when output_format is concatenate. + required: false + role: option + runtime_default: ', ' + schema: + type: string + - name: min_length + description: Minimum length of allowed results. + required: false + role: option + schema: + type: + - integer + - string + - name: max_length + description: Maximum length of allowed results. + required: false + role: option + schema: + type: + - integer + - string + - name: strategy + description: >- + Controls filtering of likely false positives such as measurements. Lenient skips this filter; + balanced and strict currently apply the same filter. Default is balanced. Unless min_length is + provided, minimum lengths default to 3 for lenient, 4 for balanced, and 5 for strict. + required: false + role: option + schema: + type: string + enum: + - lenient + - balanced + - strict + - name: sort_order + description: Default is input order. Also allows longest or shortest. + required: false + role: option + schema: + type: string + enum: + - input + - longest + - shortest + - name: disallowed_patterns + description: A pattern or JSON array of regex patterns to not include in the found codes. + required: false + role: option + schema: + type: string + - name: include_multi_part_tokens + description: Whether to include multi-part tokens that have a space. Default True. + required: false + role: option + schema: + type: boolean + - name: extract_raw + description: >- + Whether to return tokens with their adjacent non-whitespace characters included, rather than + the cleaned token. Default False. + required: false + role: option + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py + title: WranglesPY extract.codes implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/codes.md + title: Existing extract.codes Markdown +--- + +# Codes + +Extract alphanumeric codes from unstructured text. Can be performed on one column or multiple columns. Requires WrangleWorks Account. + +## Migrated examples +#### Extracting Codes From Single Column + +##### Recipe + +```yaml +# One column input +wrangles: + - extract.codes: + input: Secret + output: Code Extract +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Secret | Code Extract | +| --- | --- | +| to gain access use Z1ON0101 | ['Z1ON0101'] | + +
+ +
+ +#### Extracting Codes From Multiple Columns + +##### Recipe + +```yaml +# Multi column input +wrangles: + - extract.codes: + input: + - code1 + - code2 + output: Codes +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Codes | code1 | code2 | +| --- | --- | --- | +| ['CH465517080-1', 'CH465517080-2'] | code CH465517080-1 | code CH465517080-2 | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/extract/custom.md b/wrangles-docs/static/registry/wrangles/extract/custom.md new file mode 100644 index 0000000..05dc9f9 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/extract/custom.md @@ -0,0 +1,273 @@ +--- +schema_version: '0.1' +type: wrangle +id: e8e96b76-86bf-41dc-8d16-825dcff9688b +wrangle_name: custom +namespace: extract +title: Custom +description: >- + Extract data from the input using a DIY or bespoke extraction wrangle. Requires WrangleWorks + Account and Subscription. +wrangle_key: extract.custom +aliases: [] +slug: extract/custom +status: active +visibility: public +tags: + - extract + - custom +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.extract.custom + contract_status: verified +access: + ai_powered: false + requires_account: true + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name or list of input columns. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: model_id + description: The ID of the wrangle to use. + required: true + role: model-reference + schema: + type: + - string + - array + - name: output + description: Name or list of output columns. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: use_labels + description: 'Use Labels in the extract output {label: value}.' + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: first_element + description: Get the first element from results. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: case_sensitive + description: Allows the wrangle to be case sensitive if set to True, default is False. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: extract_raw + description: Extract the raw data from the wrangle. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: use_spellcheck + description: Use spellcheck to also find minor mispellings compared to the reference data. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: include_empty_labels + description: Include labels with no found values in the output when using use_labels=True. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: sort + description: Sort the results. + required: false + role: option + runtime_default: training_order + schema: + type: string + enum: + - training_order + - input_order + - longest + - shortest + - alphabetical + - reverse_alphabetical + - ascending + - descending + - name: output_format + description: Format of the extract output. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - 'null' + enum: + - list + - dictionary + - columns + - concatenate + - name: char + description: Character to use when output_format is concatenate. + required: false + role: option + runtime_default: ', ' + schema: + type: string +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py + title: WranglesPY extract.custom implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/custom.md + title: Existing extract.custom Markdown +--- + +# Custom + +Extract data from the input using a DIY or bespoke extraction wrangle. Can be performed on one column or multiple columns. Requires WrangleWorks Account and Subscription. + +:::info +Non-regex pattern matching extracts whole-word matches separated by word boundaries. Word boundaries include anything that is not a letter, number, or underscore. +::: + +## Migrated examples +#### Extracting Wood Types From Single Column + +##### Recipe + +```yaml +# One column input +wrangles: + - extract.custom: + input: Product + output: Wood Types + model_id: model_id_here +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Product | Wood Types | +| --- | --- | +| Dining Oakwood Chair | Oakwood | +| Living Room Teakwood Frame Mirror | Teakwood | + +
+ +
+ +#### Extracting Wood Types From Multiple Columns + +##### Recipe + +```yaml +# Multi column input +wrangles: + - extract.custom: + input: + - Part 1 of 2 + - Part 2 of 2 + output: Wood Types + model_id: model_id_here +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Wood Types | Part 1 of 2 | Part 2 of 2 | +| --- | --- | --- | +| ['Acacia Wood', 'Imitation Wood'] | Dining Acacia Wood Table | Imitation Wood Table Chairs | + +
+ +
+ +#### Using Multiple Extract Models + +##### Recipe + +```yaml +# Multiple Models +wrangles: + - extract.custom: + input: + - Product + - Product + output: + - Wood Types + - Item Type + model_id: + - wood_Type_model_id + - item_type_model_id +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Product | Item Type | Wood Types | +| --- | --- | --- | +| Dining Oakwood Chair | Chair | Oakwood | +| Living Room Teakwood Frame Mirror | Mirror | Teakwood | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/extract/date-properties.md b/wrangles-docs/static/registry/wrangles/extract/date-properties.md new file mode 100644 index 0000000..22d1a39 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/extract/date-properties.md @@ -0,0 +1,113 @@ +--- +schema_version: '0.1' +type: wrangle +id: a346de62-93cd-44ba-8d30-a6305629c6d7 +wrangle_name: date_properties +namespace: extract +title: Date Properties +description: Extract date properties from a date (day, month, year, etc...). +wrangle_key: extract.date_properties +aliases: [] +slug: extract/date-properties +status: active +visibility: public +tags: + - extract + - date-properties +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.extract.date_properties + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: property + description: Property to extract from date. + required: true + role: option + schema: + type: string + enum: + - day + - day_of_year + - month + - month_name + - weekday + - week_day_name + - week_year + - quarter + - name: output + description: Name of the output columns. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py + title: WranglesPY extract.date_properties implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/date-properties.md + title: Existing extract.date_properties Markdown +--- + +# Date Properties + +Extract date properties from a date, such as day, month, year, weekday, or quarter. + +## Migrated examples +#### Extracting Month From Date + +##### Recipe + +```yaml +wrangles: + - extract.date_properties: + input: Date + output: Output + property: month_name +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Date | Output | +| --- | --- | +| 1992-08-13 00:00:00 | August | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/extract/date-range.md b/wrangles-docs/static/registry/wrangles/extract/date-range.md new file mode 100644 index 0000000..89811d8 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/extract/date-range.md @@ -0,0 +1,124 @@ +--- +schema_version: '0.1' +type: wrangle +id: 9cebfa6f-a524-4aec-84a7-02d77b792843 +wrangle_name: date_range +namespace: extract +title: Date Range +description: Extract date range frequency from two dates. +wrangle_key: extract.date_range +aliases: [] +slug: extract/date-range +status: active +visibility: public +tags: + - extract + - date-range +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.extract.date_range + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: start_time + description: Name of the start date column. + required: true + role: option + schema: + type: string + - name: end_time + description: Name of the end date column. + required: true + role: option + schema: + type: string + - name: output + description: Name of the output column. + required: true + role: column-output + schema: + type: string + - name: range + description: Type of frequency to count. + required: false + role: option + runtime_default: day + schema: + type: string + enum: + - business days + - days + - weeks + - months + - semi months + - business month ends + - month starts + - semi month starts + - business month starts + - quarters + - quarter starts + - years + - business hours + - hours + - minutes + - seconds + - milliseconds +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py + title: WranglesPY extract.date_range implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/date-range.md + title: Existing extract.date_range Markdown +--- + +# Date Range + +Extract date range frequency from two dates. + +## Migrated examples +#### Extracting Number of Months From Range + +##### Recipe + +```yaml +wrangles: + - extract.date_range: + start_time: Start + end_time: End + output: Output + range: months +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| End | Start | Output | +| --- | --- | --- | +| 2023-08-13 00:00:00 | 1992-08-13 00:00:00 | 371 | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/extract/html.md b/wrangles-docs/static/registry/wrangles/extract/html.md new file mode 100644 index 0000000..938610c --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/extract/html.md @@ -0,0 +1,162 @@ +--- +schema_version: '0.1' +type: wrangle +id: 728fc87a-a20d-4efa-833a-612e0b5eadc3 +wrangle_name: html +namespace: extract +title: HTML +description: Extract elements from strings containing html. Requires WrangleWorks Account. +wrangle_key: extract.html +aliases: [] +slug: extract/html +status: active +visibility: public +tags: + - extract + - html +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.extract.html + contract_status: verified +access: + ai_powered: false + requires_account: true + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name or list of input columns. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: data_type + description: The type of data to extract. + required: true + role: option + schema: + type: string + enum: + - text + - links + - name: output + description: Name or list of output columns. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: output_format + description: Format of the extract output. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - 'null' + enum: + - list + - columns + - concatenate + - name: char + description: Character to use when output_format is concatenate. + required: false + role: option + runtime_default: ', ' + schema: + type: string +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py + title: WranglesPY extract.html implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/html.md + title: Existing extract.html Markdown +--- + +# HTML + +Extract text and links from HTML elements. Requires WrangleWorks Account. + +## Migrated examples +#### Extracting Text From HTML + +##### Recipe + +```yaml +wrangles: + - extract.html: + input: HTML + output: Text + data_type: text +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| HTML | Text | +| --- | --- | +| ` | | + +
+ +
+ +#### Extracting Links From HTML + +##### Recipe + +```yaml +wrangles: + - extract.html: + input: HTML + output: Links + data_type: links +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| HTML | Links | +| --- | --- | +| ` | | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/extract/properties.md b/wrangles-docs/static/registry/wrangles/extract/properties.md new file mode 100644 index 0000000..4c4198c --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/extract/properties.md @@ -0,0 +1,184 @@ +--- +schema_version: '0.1' +type: wrangle +id: 23bbdb86-fd13-4b78-8fff-a7a76769ab63 +wrangle_name: properties +namespace: extract +title: Properties +description: Extract text properties from the input. Requires WrangleWorks Account. +wrangle_key: extract.properties +aliases: [] +slug: extract/properties +status: active +visibility: public +tags: + - extract + - properties +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.extract.properties + contract_status: verified +access: + ai_powered: false + requires_account: true + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output columns. + required: true + role: column-output + schema: + type: + - string + - array + - name: property_type + description: The specific type of properties to extract. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + enum: + - Colours + - Materials + - Shapes + - Standards + - name: return_data_type + description: Legacy format option. Prefer output_format. + required: false + role: option + runtime_default: list + schema: + type: string + enum: + - list + - string + - name: first_element + description: Get the first element from results. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: output_format + description: Format of the extract output. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - 'null' + enum: + - list + - dictionary + - columns + - concatenate + - name: char + description: Character to use when output_format is concatenate. + required: false + role: option + runtime_default: ', ' + schema: + type: string +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py + title: WranglesPY extract.properties implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/properties.md + title: Existing extract.properties Markdown +--- + +# Properties + +Extract categorical properties from unstructured text, such as colours or materials. Requires WrangleWorks Account. + +## Migrated examples +#### Extracting All Properties + +##### Recipe + +```yaml +wrangles: + - extract.properties: + input: water bottles + output: properties +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Products | Product Properties | +| --- | --- | +| Stainless Steel Blue Bottle | \{'Colours': ['Blue'], 'Materials': ['Stainless Steel']\} | +| Plastic Yellow Bottle | \{'Colours': ['Yellow'], 'Materials': ['Plastic']\} | + +
+ +
+ +#### Extracting Colour + +##### Recipe + +```yaml +wrangles: + - extract.properties: + input: water bottles + output: properties + property_type: colours # Optional +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| Products | Product Colours | +| --- | --- | +| Stainless Steel Blue Bottle | ['Blue'] | +| Plastic Yellow Bottle | ['Yellow'] | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/extract/regex.md b/wrangles-docs/static/registry/wrangles/extract/regex.md new file mode 100644 index 0000000..8529f1a --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/extract/regex.md @@ -0,0 +1,180 @@ +--- +schema_version: '0.1' +type: wrangle +id: 9aa0253a-4b70-4737-832c-964e15967289 +wrangle_name: regex +namespace: extract +title: Regex +description: Extract matches or specific capture groups using regex. +wrangle_key: extract.regex +aliases: [] +slug: extract/regex +status: active +visibility: public +tags: + - extract + - regex +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.extract.regex + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column(s). + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: find + description: Pattern to find using regex. + required: true + role: option + schema: + type: string + - name: output + description: Name of the output column(s). + required: true + role: column-output + schema: + type: + - string + - array + - name: output_pattern + description: >- + Specifies the format to output matches and specific capture groups using backreferences (e.g., + `\1`, `\2`). Default is to return entire matches. **Example**: For a regex pattern + `r'(\d+)\s(\w+)'` and `output_pattern = '\2 \1'`, with input `'120 volt'`, the output would be + `'volt 120'`. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - 'null' + - name: first_element + description: Get the first element from results. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: output_format + description: Format of the extract output. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - 'null' + enum: + - list + - columns + - concatenate + - name: char + description: Character to use when output_format is concatenate. + required: false + role: option + runtime_default: ', ' + schema: + type: string +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/extract.py + title: WranglesPY extract.regex implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/extract/_sources/regex.md + title: Existing extract.regex Markdown +--- + +# Regex + +Extract single values, matches, or specific capture groups using regex. + +## Migrated examples +#### Extracting Number of Months From Range + +##### Recipe + +```yaml +wrangles: + - extract.regex: + input: Product + output: GPM + find: \d\.?\d? ?gpm +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| GPM | Product | +| --- | --- | +| 3.4 gpm | 3.4 gpm water pump | +| 2gpm | 2gpm water pump | + +
+ +
+ +#### Implementing output_pattern + +##### Recipe + +```yaml +wrangles: + - extract.regex: + input: Product + output: GPM + find: (\d\.?\d?) ?gpm + output_pattern: \1 Gallons Per Minute +``` + +
+ +
+ +##### Input Sample + +_No sample available._ + +
+ +
+ +##### Output Sample + +| GPM | Product | +| --- | --- | +| 3.4 Gallons Per Minute | 3.4 gpm water pump for 5.5 gallon tank | +| 2 Gallons Per Minute | 2gpm water pump for 2 gal tank | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/format/dates.md b/wrangles-docs/static/registry/wrangles/format/dates.md new file mode 100644 index 0000000..519bb66 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/format/dates.md @@ -0,0 +1,107 @@ +--- +schema_version: '0.1' +type: wrangle +id: a3c15135-4f7a-4659-83fd-f657afa603c9 +wrangle_name: dates +namespace: format +title: Dates +description: Format a date. +wrangle_key: format.dates +aliases: [] +slug: format/dates +status: active +visibility: public +tags: + - format + - dates +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.format.dates + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: format + description: String pattern to format date. + required: true + role: option + schema: + type: string + - name: output + description: Name of the output column. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py + title: WranglesPY format.dates implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/dates.md + title: Existing format.dates Markdown +--- + +# Dates + +Format a date into the desired pattern. + +## Migrated examples +#### Changing The Format of a Date + +##### Recipe + +```yaml +wrangles: + - format.dates: + input: Date + output: Output Format + format: '%Y-%m-%d' # must be wrapped by quotes " or ' +``` + +
+ +
+ +##### Input Sample + +| Date | +| --- | +| 6/23/1912 | + +
+ +
+ +##### Output Sample + +| Date | Output Format | +| --- | --- | +| 6/23/1912 | 1912-06-23 | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/format/pad.md b/wrangles-docs/static/registry/wrangles/format/pad.md new file mode 100644 index 0000000..84de5da --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/format/pad.md @@ -0,0 +1,133 @@ +--- +schema_version: '0.1' +type: wrangle +id: 76c19378-38f4-45aa-85d1-3cdf8f8aae29 +wrangle_name: pad +namespace: format +title: Pad +description: Pad a string to a fixed length. +wrangle_key: format.pad +aliases: [] +slug: format/pad +status: active +visibility: public +tags: + - format + - pad +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.format.pad + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: pad_length + description: Length for the output. + required: true + role: option + schema: + type: integer + - name: side + description: Side from which to fill resulting string. + required: true + role: option + schema: + type: string + - name: char + description: The character to pad the input with. + required: true + role: option + schema: + type: string + - name: output + description: Name of the output column. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: skip_empty + description: If true, skip padding for empty or whitespace-only values. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py + title: WranglesPY format.pad implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/pad.md + title: Existing format.pad Markdown +--- + +# Pad + +Pad a string to a fixed length + +## Migrated examples +#### Adding Dashes to Part Numbers + +##### Recipe + +```yaml +wrangles: + - format.pad: + input: Part Number + pad_length: 5 + side: left + char: "-" +``` + +
+ +
+ +##### Input Sample + +| Part Number | +| --- | +| 0458 | +| 396 | +| 84 | +| 98516 | + +
+ +
+ +##### Output Sample + +| Part Number | +| --- | +| -0458 | +| --396 | +| ---84 | +| 98516 | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/format/prefix.md b/wrangles-docs/static/registry/wrangles/format/prefix.md new file mode 100644 index 0000000..6035fd6 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/format/prefix.md @@ -0,0 +1,121 @@ +--- +schema_version: '0.1' +type: wrangle +id: c12f99b9-2363-4da7-8405-7c73b87906e5 +wrangle_name: prefix +namespace: format +title: Prefix +description: Add a prefix to a column. +wrangle_key: format.prefix +aliases: [] +slug: format/prefix +status: active +visibility: public +tags: + - format + - prefix +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.format.prefix + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: value + description: Prefix value to add. + required: true + role: option + schema: + type: + - string + - integer + - number + - name: output + description: (Optional) Name of the output column. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: skip_empty + description: Whether to skip empty values. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py + title: WranglesPY format.prefix implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/prefix.md + title: Existing format.prefix Markdown +--- + +# Prefix + +Add a prefix to a column. + +## Migrated examples +#### Adding a Prefix to a String + +##### Recipe + +```yaml +wrangles: + - format.prefix: + input: Data + output: Prefix + value: anti +``` + +
+ +
+ +##### Input Sample + +| Data | +| --- | +| freeze | +| dote | +| hero | + +
+ +
+ +##### Output Sample + +| Data | Prefix | +| --- | --- | +| freeze | antifreeze | +| dote | antidote | +| hero | antihero | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/format/price-breaks.md b/wrangles-docs/static/registry/wrangles/format/price-breaks.md new file mode 100644 index 0000000..3ca2e39 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/format/price-breaks.md @@ -0,0 +1,63 @@ +--- +schema_version: '0.1' +type: wrangle +id: null +wrangle_name: price_breaks +namespace: format +title: Format Price Breaks +description: Expand non-empty price-break cells into paired category and value columns. +wrangle_key: format.price_breaks +aliases: [] +slug: format/price-breaks +status: active +visibility: public +tags: + - format + - price-breaks +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.format.price_breaks + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name, index, or list of input columns. + required: true + role: column-selector + schema: + type: array + - name: categoryLabel + description: Prefix for output columns that identify the source price-break category. + required: true + role: option + schema: + type: string + - name: valueLabel + description: Prefix for output columns that contain the corresponding price-break value. + required: true + role: option + schema: + type: string +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py + title: WranglesPY format.price_breaks implementation +--- + +# Format Price Breaks + +## Behavior + +Expand non-empty price-break cells into paired category and value columns. + +This first-pass guidance is derived from the callable signature. diff --git a/wrangles-docs/static/registry/wrangles/format/remove-duplicates.md b/wrangles-docs/static/registry/wrangles/format/remove-duplicates.md new file mode 100644 index 0000000..2729093 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/format/remove-duplicates.md @@ -0,0 +1,110 @@ +--- +schema_version: '0.1' +type: wrangle +id: 283b9e78-b2b2-43d0-844f-9842c33120aa +wrangle_name: remove_duplicates +namespace: format +title: Remove Duplicates +description: Remove duplicates from a list. Preserves input order. +wrangle_key: format.remove_duplicates +aliases: [] +slug: format/remove-duplicates +status: active +visibility: public +tags: + - format + - remove-duplicates +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.format.remove_duplicates + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output column. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: ignore_case + description: Ignore case when removing duplicates. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py + title: WranglesPY format.remove_duplicates implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/remove-duplicates.md + title: Existing format.remove_duplicates Markdown +--- + +# Remove Duplicates + +Remove duplicate values in a list. + +## Migrated examples +#### Removing Duplicates From a List + +##### Recipe + +```yaml +wrangles: + - format.remove_duplicates: + input: Attack of the Clones + output: Commander + where: Rank = Commander +``` + +
+ +
+ +##### Input Sample + +| Rank | Attack of the Clones | +| --- | --- | +| Commander | ['Cody', 'Cody', 'Cody'] | +| Captain | ['Rex', 'Rex', 'Rex'] | + +
+ +
+ +##### Output Sample + +| Rank | Commander | Attack of the Clones | +| --- | --- | --- | +| Commander | ['Cody'] | ['Cody', 'Cody', 'Cody'] | +| Captain | | ['Rex', 'Rex', 'Rex'] | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/format/significant-figures.md b/wrangles-docs/static/registry/wrangles/format/significant-figures.md new file mode 100644 index 0000000..aead2ba --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/format/significant-figures.md @@ -0,0 +1,112 @@ +--- +schema_version: '0.1' +type: wrangle +id: a359f72a-5250-4dd8-84f6-8a8173bee0f6 +wrangle_name: significant_figures +namespace: format +title: Significant Figures +description: Format a value to a specific number of significant figures. +wrangle_key: format.significant_figures +aliases: [] +slug: format/significant-figures +status: active +visibility: public +tags: + - format + - significant-figures +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.format.significant_figures + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: significant_figures + description: Number of significant figures to format to. Default is 3. + required: false + role: option + runtime_default: 3 + schema: + type: integer + - name: output + description: Name of the output column. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py + title: WranglesPY format.significant_figures implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/significant-figures.md + title: Existing format.significant_figures Markdown +--- + +# Significant Figures + +Format a value to a specific number of significant figures + +## Migrated examples +#### Rounding to Significant Figures + +##### Recipe + +```yaml +wrangles: + - format.significant_figures: + input: Data + significant_figures: 2 + output: Data to 2 Figures +``` + +
+ +
+ +##### Input Sample + +| Data | +| --- | +| 1.25 | +| 12.3 | +| 55.6 | + +
+ +
+ +##### Output Sample + +| Data | Data to 2 Figures | +| --- | --- | +| 1.25 | 1.2 | +| 12.3 | 12 | +| 55.6 | 55 | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/format/suffix.md b/wrangles-docs/static/registry/wrangles/format/suffix.md new file mode 100644 index 0000000..2134406 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/format/suffix.md @@ -0,0 +1,121 @@ +--- +schema_version: '0.1' +type: wrangle +id: 8d127060-ba2d-4934-897f-07662e01e40b +wrangle_name: suffix +namespace: format +title: Suffix +description: Add a suffix to a column. +wrangle_key: format.suffix +aliases: [] +slug: format/suffix +status: active +visibility: public +tags: + - format + - suffix +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.format.suffix + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: value + description: Suffix value to add. + required: true + role: option + schema: + type: + - string + - integer + - number + - array + - name: output + description: (Optional) Name of the output column. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - 'null' + - name: skip_empty + description: Whether to skip empty values. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py + title: WranglesPY format.suffix implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/suffix.md + title: Existing format.suffix Markdown +--- + +# Suffix + +Add a suffix to a column + +## Migrated examples +#### Adding a Suffix to a String + +##### Recipe + +```yaml +wrangles: + - format.suffix: + input: Data + output: Suffix + value: ic +``` + +
+ +
+ +##### Input Sample + +| Data | +| --- | +| sto | +| hero | +| icon | + +
+ +
+ +##### Output Sample + +| Data | Suffix | +| --- | --- | +| sto | stoic | +| hero | heroic | +| icon | iconic | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/format/trim.md b/wrangles-docs/static/registry/wrangles/format/trim.md new file mode 100644 index 0000000..fcc36bc --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/format/trim.md @@ -0,0 +1,105 @@ +--- +schema_version: '0.1' +type: wrangle +id: af16b3c1-c230-4868-8ebe-f574904a0c76 +wrangle_name: trim +namespace: format +title: Trim +description: Remove excess whitespace at the start and end of text. +wrangle_key: format.trim +aliases: [] +slug: format/trim +status: active +visibility: public +tags: + - format + - trim +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.format.trim + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output column. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/format.py + title: WranglesPY format.trim implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/format/_sources/trim.md + title: Existing format.trim Markdown +--- + +# Trim + +Remove excess whitespace at the start and end of text. Can accept multiple columns. + +:::note +Non-string values pass through unaltered. +::: + +## Migrated examples +#### Trimming a String + +##### Recipe + +```yaml +wrangles: + - format.trim: + input: + - col1 + output: col1 trimmed +``` + +
+ +
+ +##### Input Sample + +| col1 | +| --- | +| ` Hello World ` | + +
+ +
+ +##### Output Sample + +| col1 | col1 trimmed | +| --- | --- | +| Hello World | Hello World | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/generate/ai.md b/wrangles-docs/static/registry/wrangles/generate/ai.md new file mode 100644 index 0000000..9690616 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/generate/ai.md @@ -0,0 +1,199 @@ +--- +schema_version: '0.1' +type: wrangle +id: 12c31c6c-cade-484d-84ba-7f302bf6af52 +wrangle_name: ai +namespace: generate +title: Ai +description: Generate structured AI output for each recipe row. +wrangle_key: generate.ai +aliases: [] +slug: generate/ai +status: active +visibility: public +tags: + - ai + - generate +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.generate.ai + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: api_key + description: OpenAI-compatible API key. + required: true + role: credential + schema: + type: string + - name: output + description: Target schema; string/array shorthands are expanded automatically. + required: true + role: column-output + schema: + type: + - string + - array + - object + - name: input + description: Column(s) to concatenate into the prompt (defaults to all columns). + required: false + role: column-selector + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: model + description: Responses model name (e.g. gpt-5-mini). + required: false + role: option + runtime_default: gpt-5 + schema: + type: string + - name: threads + description: Maximum concurrent requests (default 20). + required: false + role: option + runtime_default: 20 + schema: + type: integer + - name: timeout + description: Per-request timeout in seconds. + required: false + role: option + runtime_default: 90 + schema: + type: integer + - name: retries + description: Number of retry attempts on failure. + required: false + role: option + runtime_default: 0 + schema: + type: integer + - name: messages + description: Optional extra messages forwarded to the inner generate helper. + required: false + role: option + runtime_default: null + schema: + type: + - array + - object + - 'null' + - name: url + description: Override for the OpenAI-compatible endpoint. + required: false + role: option + runtime_default: https://api.openai.com/v1/responses + schema: + type: string + - name: strict + description: Enforce JSON-schema validation on the response. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: web_search + description: Enable DuckDuckGo context lookup per row. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: reasoning + description: Responses API reasoning options (forwarded verbatim). + required: false + role: option + runtime_default: + effort: low + schema: + type: + - string + - object + - name: previous_response + description: Chain responses by reusing previous_response_id for field-by-field calls. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: summary + description: Request summary text to be merged into the output. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/generate.py + title: WranglesPY generate.ai implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/ai/_sources/ai.md + title: Existing generate.ai Markdown +--- + +# Ai + +Generate structured AI output for each recipe row. + +## Migrated examples +#### Generate Structured Product Data + +This template generates a category from a product description. AI-generated values can vary by model and request. + +##### Recipe + +```yaml +wrangles: + - generate.ai: + input: + - Product Description + output: + Category: + type: string + description: Broad product category + api_key: Your OpenAI-compatible API key + model: gpt-5-mini +``` + +
+ +
+ +##### Input Sample + +| Product Description | +| --- | +| Stainless steel insulated water bottle, 750 ml | + +
+ +
+ +##### Output Sample + +| Product Description | Category | +| --- | --- | +| Stainless steel insulated water bottle, 750 ml | Drinkware | + +
+ +
+ +_Template based on the documented parameters; no published source example is currently available._ diff --git a/wrangles-docs/static/registry/wrangles/merge/coalesce.md b/wrangles-docs/static/registry/wrangles/merge/coalesce.md new file mode 100644 index 0000000..5178b47 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/merge/coalesce.md @@ -0,0 +1,104 @@ +--- +schema_version: '0.1' +type: wrangle +id: 25c1a60d-fa48-4b9a-8c03-0921d5b31049 +wrangle_name: coalesce +namespace: merge +title: Coalesce +description: Take the first non-empty value from a series of columns or lists. +wrangle_key: merge.coalesce +aliases: [] +slug: merge/coalesce +status: active +visibility: public +tags: + - merge + - coalesce +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.merge.coalesce + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: List of input columns or a single column containing lists. + required: true + role: column-selector + schema: + type: array + - name: output + description: Name of the output columns. This is required if multiple input columns are provided. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/merge.py + title: WranglesPY merge.coalesce implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/merge/_sources/coalesce.md + title: Existing merge.coalesce Markdown +--- + +# Coalesce + +Take the first non-empty value from a series of columns. + +## Migrated examples +#### Coalescing 3 Columns + +##### Recipe + +```yaml +wrangles: + - merge.coalesce: + input: + - Col1 + - Col2 + - Col3 + output: Output Col + where: Col2 = E +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | Col3 | +| --- | --- | --- | +| A | B | C | +| D | E | F | +| G | H | I | + +
+ +
+ +##### Output Sample + +| Col1 | Col2 | Col3 | Output Col | +| --- | --- | --- | --- | +| A | B | C | | +| D | E | F | D | +| G | H | I | | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/merge/concatenate.md b/wrangles-docs/static/registry/wrangles/merge/concatenate.md new file mode 100644 index 0000000..fa69003 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/merge/concatenate.md @@ -0,0 +1,153 @@ +--- +schema_version: '0.1' +type: wrangle +id: 6ff76728-e1f6-4d3d-8946-6aa3b7524b3f +wrangle_name: concatenate +namespace: merge +title: Concatenate +description: Concatenate a list of columns or a list within a single column. +wrangle_key: merge.concatenate +aliases: [] +slug: merge/concatenate +status: active +visibility: public +tags: + - merge + - concatenate +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.merge.concatenate + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Either a single column name or list of columns. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output column. + required: true + role: column-output + schema: + type: string + - name: char + description: (Optional) Character to add between successive values. + required: false + role: option + runtime_default: ',' + schema: + type: string + - name: skip_empty + description: Whether to skip empty values, defaults to false. + required: false + role: option + runtime_default: false + schema: + type: boolean + desription: Whether to skip empty values +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/merge.py + title: WranglesPY merge.concatenate implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/merge/_sources/concatenate.md + title: Existing merge.concatenate Markdown +--- + +# Concatenate + +If the input is a list of columns, concatenate multiple columns into one as a delimited string. If the input is a single column, concatenate a list within that column into a delimited string. + +## Migrated examples +#### Concatenating 3 Columns + +##### Recipe + +```yaml +# Using concatenate to combine multiple columns +wrangles: + - merge.concatenate: + input: + - Col1 + - Col2 + - Col3 + output: Join Col + char: ', ' +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | Col3 | +| --- | --- | --- | +| A | B | C | + +
+ +
+ +##### Output Sample + +| Join Col | +| --- | +| A, B, C | + +
+ +
+ +#### Concatenating a Single Column + +##### Recipe + +```yaml +# Using concatenate to join a column that is a list +wrangles: + - merge.concatenate: + input: Col1 + output: Join List + char: ' ' +``` + +
+ +
+ +##### Input Sample + +| Col1 | +| --- | +| ['A', 'B', 'C'] | + +
+ +
+ +##### Output Sample + +| Join List | +| --- | +| A B C | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/merge/dictionaries.md b/wrangles-docs/static/registry/wrangles/merge/dictionaries.md new file mode 100644 index 0000000..97e424f --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/merge/dictionaries.md @@ -0,0 +1,182 @@ +--- +schema_version: '0.1' +type: wrangle +id: 93e27737-e966-4ba9-8777-4e96724ebfc4 +wrangle_name: dictionaries +namespace: merge +title: Dictionaries +description: Take dictionaries in multiple columns and merge them to a single dictionary. +wrangle_key: merge.dictionaries +aliases: [] +slug: merge/dictionaries +status: active +visibility: public +tags: + - merge + - dictionaries +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.merge.dictionaries + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: List of input columns. + required: true + role: column-selector + schema: + type: array + - name: output + description: Name of the output column. + required: true + role: column-output + schema: + type: string + - name: skip_empty + description: Whether to skip empty dictionaries when merging. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/merge.py + title: WranglesPY merge.dictionaries implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/merge/_sources/dictionaries.md + title: Existing merge.dictionaries Markdown +--- + +# Dictionaries + +Take dictionaries in multiple columns and merge them to a single dictionary. + +:::note +For duplicate keys, the last key in the input list takes precedence in the merged dictionary. +::: + +## Migrated examples +#### Using Named Columns + +##### Recipe + +```yaml +wrangles: + - merge.dictionaries: + input: + - Dict 1 + - Dict 2 + output: Merged +``` + +
+ +
+ +##### Input Sample + +| Dict 1 | Dict 2 | +| --- | --- | +| \{'First': 'One'\} | \{'Second': 'Two'\} | + +
+ +
+ +##### Output Sample + +| Merged | +| --- | +| \{'First': 'One', 'Second': 'Two'\} | + +
+ +
+ +#### Using a Wildcard (*) + +##### Recipe + +```yaml +# Using a Wildcard (*) +wrangles: + - merge.dictionaries: + input: Dict * + output: Merged +``` + +
+ +
+ +##### Input Sample + +| Dict 1 | Dict 2 | +| --- | --- | +| \{'First': 'One'\} | \{'Second': 'Two'\} | + +
+ +
+ +##### Output Sample + +| Merged | +| --- | +| \{'First': 'One', 'Second': 'Two'\} | + +
+ +
+ +#### Using a Wildcard (*) With Not Columns + +##### Recipe + +```yaml +# Using a Wildcard (*) +wrangles: + - merge.dictionaries: + input: + - Dict * + - -Dict 2 + output: Merged +``` + +Note the extra dash in front of `Dict 2` excludes that column from the wildcard selection. + +
+ +
+ +##### Input Sample + +| Dict 1 | Dict 2 | Dict 3 | +| --- | --- | --- | +| \{'First': 'One'\} | \{'Second': 'Two'\} | \{'Third': 'Three'\} | + +
+ +
+ +##### Output Sample + +| Merged | +| --- | +| \{'First': 'One', 'Third': 'Three'\} | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/merge/key-value-pairs.md b/wrangles-docs/static/registry/wrangles/merge/key-value-pairs.md new file mode 100644 index 0000000..167aa94 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/merge/key-value-pairs.md @@ -0,0 +1,148 @@ +--- +schema_version: '0.1' +type: wrangle +id: 8a2cd37c-8ef7-4b05-8264-36512f5dd837 +wrangle_name: key_value_pairs +namespace: merge +title: Key Value Pairs +description: >- + Create a dictionary from keys and values in paired columns e.g. COLUMN_NAME_1, COLUMN_VALUE_1, + COLUMN_NAME_2, COLUMN_VALUE_2 ... +wrangle_key: merge.key_value_pairs +aliases: [] +slug: merge/key-value-pairs +status: active +visibility: public +tags: + - merge + - key-value-pairs +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.merge.key_value_pairs + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Matched pairs of key and value columns. + required: true + role: column-selector + schema: + type: object + - name: output + description: Name of the output column. + required: true + role: column-output + schema: + type: string + - name: skip_empty + description: Whether to skip empty keys or values when creating the dictionary. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/merge.py + title: WranglesPY merge.key_value_pairs implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/merge/_sources/key-value-pairs.md + title: Existing merge.key_value_pairs Markdown +--- + +# Key Value Pairs + +Create a dictionary from keys and values in paired columns. + +## Migrated examples +#### Using Named Columns + +##### Recipe + +```yaml +wrangles: + - merge.key_value_pairs: + input: + Letter: Number + output: Pairs +``` + +
+ +
+ +##### Input Sample + +| Letter | Number | +| --- | --- | +| A | 1 | +| B | 2 | +| C | 3 | + +
+ +
+ +##### Output Sample + +| Pairs | +| --- | +| \{'A': 1\} | +| \{'B': 2\} | +| \{'C': 3\} | + +
+ +
+ +#### Using a wildcard (*) + +##### Recipe + +```yaml +# Using a Wildcard (*) +wrangles: + - merge.key_value_pairs: + input: + key*: value* + output: Object +``` + +
+ +
+ +##### Input Sample + +| key 1 | key 2 | value 1 | value 2 | +| --- | --- | --- | --- | +| A | One | a | First | +| B | Two | b | Second | +| C | three | c | Third | + +
+ +
+ +##### Output Sample + +| Object | +| --- | +| \{'A': 'a', 'One': 'First'\} | +| \{'B': 'b', 'Two': 'Second'\} | +| \{'C': 'c', 'three': 'Third'\} | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/merge/lists.md b/wrangles-docs/static/registry/wrangles/merge/lists.md new file mode 100644 index 0000000..b20fbaf --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/merge/lists.md @@ -0,0 +1,117 @@ +--- +schema_version: '0.1' +type: wrangle +id: d9978f00-b3d4-4583-884e-a53b98a43e9a +wrangle_name: lists +namespace: merge +title: Lists +description: Take lists in multiple columns and merge them to a single list. +wrangle_key: merge.lists +aliases: [] +slug: merge/lists +status: active +visibility: public +tags: + - merge + - lists +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.merge.lists + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: List of input columns. + required: true + role: column-selector + schema: + type: array + - name: output + description: Name of the output column. + required: true + role: column-output + schema: + type: string + - name: remove_duplicates + description: Whether to remove duplicates from the created list. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: ignore_case + description: Ignore case when removing duplicates. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: include_empty + description: Whether to include empty values in the created list. + required: false + role: option + runtime_default: true + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/merge.py + title: WranglesPY merge.lists implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/merge/_sources/lists.md + title: Existing merge.lists Markdown +--- + +# Lists + +Take lists in multiple columns and merge them to a single list. + +## Migrated examples +#### Merging Two Lists + +##### Recipe + +```yaml +wrangles: + - merge.lists: + input: + - col1 + - col2 + output: Combined Col + remove_duplicates: false +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | +| --- | --- | +| ['A', 'B'] | ['D', 'E'] | + +
+ +
+ +##### Output Sample + +| Combined Col | +| --- | +| ['A', 'B', 'D', 'E'] | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/merge/to-dict.md b/wrangles-docs/static/registry/wrangles/merge/to-dict.md new file mode 100644 index 0000000..509779b --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/merge/to-dict.md @@ -0,0 +1,104 @@ +--- +schema_version: '0.1' +type: wrangle +id: 9b869210-0d89-403b-8409-7cecdb5f9c7c +wrangle_name: to_dict +namespace: merge +title: To Dict +description: >- + Take multiple columns and merge them to a dictionary (aka object) using the column headers as + keys. +wrangle_key: merge.to_dict +aliases: [] +slug: merge/to-dict +status: active +visibility: public +tags: + - merge + - to-dict +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.merge.to_dict + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: List of input columns. + required: true + role: column-selector + schema: + type: array + - name: output + description: Name of the output column. + required: true + role: column-output + schema: + type: string + - name: include_empty + description: Whether to include empty columns in the created dictionary. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/merge.py + title: WranglesPY merge.to_dict implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/merge/_sources/to-dict.md + title: Existing merge.to_dict Markdown +--- + +# To Dict + +Take multiple columns and merge them to a dictionary (aka object) using the column headers as keys. + +## Migrated examples +#### Merging Two Columns Into a Dictionary + +##### Recipe + +```yaml +wrangles: + - merge.to_dict: + input: + - Col1 + - Col2 + output: Dict Col +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | +| --- | --- | +| A | B | + +
+ +
+ +##### Output Sample + +| Dict Col | +| --- | +| \{'Col1': 'A', 'Col2': 'B'\} | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/merge/to-list.md b/wrangles-docs/static/registry/wrangles/merge/to-list.md new file mode 100644 index 0000000..62ebd22 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/merge/to-list.md @@ -0,0 +1,103 @@ +--- +schema_version: '0.1' +type: wrangle +id: d5300fe7-c8a4-4a41-8f12-f2c1698678cc +wrangle_name: to_list +namespace: merge +title: To List +description: Take multiple columns and merge them to a list. +wrangle_key: merge.to_list +aliases: [] +slug: merge/to-list +status: active +visibility: public +tags: + - merge + - to-list +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.merge.to_list + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: List of input columns. + required: true + role: column-selector + schema: + type: array + - name: output + description: Name of the output column. + required: true + role: column-output + schema: + type: string + - name: include_empty + description: Whether to include empty columns in the created list. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/merge.py + title: WranglesPY merge.to_list implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/merge/_sources/to-list.md + title: Existing merge.to_list Markdown +--- + +# To List + +Take multiple columns and merge them to a list. + +## Migrated examples +#### Merging Multiple Columns to a Single List + +##### Recipe + +```yaml +wrangles: + - merge.to_list: + input: + - Col1 + - Col2 + - Col3 + output: List Col +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | Col3 | +| --- | --- | --- | +| A | B | C | + +
+ +
+ +##### Output Sample + +| List Col | +| --- | +| ['A', 'B', 'C'] | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/search/find-links.md b/wrangles-docs/static/registry/wrangles/search/find-links.md new file mode 100644 index 0000000..2cde605 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/search/find-links.md @@ -0,0 +1,181 @@ +--- +schema_version: '0.1' +type: wrangle +id: ec1f661b-2cbc-4a47-88e3-646179104376 +wrangle_name: find_links +namespace: search +title: Find Links +description: >- + Perform web searches to find links. Returns structured search results with titles, links, + snippets, and optional pricing. +wrangle_key: search.find_links +aliases: [] +slug: search/find-links +status: active +visibility: public +tags: + - search + - find-links +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.search.find_links + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: queries + description: Name or list of input columns containing search queries. + required: true + role: option + schema: + type: + - string + - array + - name: id + description: Name of the column containing the row ID to append to each search result. + required: true + role: option + schema: + type: string + - name: output + description: >- + Output column for the dictionaries. If a list of 2 is provided, outputs [dicts_column, + pretty_strings_column]. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: client + description: The search provider to use. + required: false + role: option + runtime_default: serpapi + schema: + type: string + enum: + - serpapi + - name: api_key + description: >- + API key for the search client. Can also be set as an environment variable (e.g., + SERPAPI_API_KEY). + required: false + role: credential + runtime_default: null + schema: + type: + - string + - 'null' + - name: n_results + description: Number of search results to return per query (default 10, max 100). + required: false + role: option + runtime_default: 10 + schema: + type: integer + - name: threads + description: Number of concurrent threads for parallel processing (default 10). + required: false + role: option + runtime_default: 10 + schema: + type: integer + - name: country + description: 'Country code for search results (default ''us''). Alias: gl.' + required: false + role: option + schema: + type: string + - name: language + description: 'Language code for search results (default ''en''). Alias: hl.' + required: false + role: option + schema: + type: string + - name: location + description: Location for search results (e.g., 'Austin, Texas'). + required: false + role: option + schema: + type: string + - name: device + description: Device type for search results. + required: false + role: option + schema: + type: string + enum: + - desktop + - mobile + - tablet +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/search.py + title: WranglesPY search.find_links implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/search/_sources/find-links.md + title: Existing search.find_links Markdown +--- + +# Find Links + +Perform web searches to find links. Returns structured search results with titles, links, snippets, and optional pricing. + +## Migrated examples +#### Find Product Links + +This template searches once per query and returns structured result dictionaries. Search results vary by provider, location, and time. + +##### Recipe + +```yaml +wrangles: + - search.find_links: + id: Row ID + queries: + - Search Query + output: + - Search Results + api_key: Your SerpApi API key + client: serpapi + n_results: 5 +``` + +
+ +
+ +##### Input Sample + +| Row ID | Search Query | +| --- | --- | +| 1001 | SKF 6202 bearing supplier | + +
+ +
+ +##### Output Sample + +| Row ID | Search Query | Search Results | +| --- | --- | --- | +| 1001 | SKF 6202 bearing supplier | `[{"title": "Example result", "link": "https://example.com/6202", "snippet": "SKF 6202 bearing"}]` | + +
+ +
+ +_Template based on the documented parameters; no published source example is currently available._ diff --git a/wrangles-docs/static/registry/wrangles/search/retrieve-link-content.md b/wrangles-docs/static/registry/wrangles/search/retrieve-link-content.md new file mode 100644 index 0000000..c83f25c --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/search/retrieve-link-content.md @@ -0,0 +1,164 @@ +--- +schema_version: '0.1' +type: wrangle +id: 3d5faa87-9e96-48c0-8226-5ae566e8d76c +wrangle_name: retrieve_link_content +namespace: search +title: Retrieve Link Content +description: >- + Retrieves targeted content from web pages using LLM URL extraction. Can optionally output a second + column containing a clean, human-readable text summary of the retrieved data. +wrangle_key: search.retrieve_link_content +aliases: [] +slug: search/retrieve-link-content +status: active +visibility: public +tags: + - search + - retrieve-link-content +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.search.retrieve_link_content + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name or list of input columns containing URLs or Scored Search Result dictionaries. + required: true + role: column-selector + schema: + type: + - string + - array + - name: output + description: >- + Name of the output column for the raw dictionaries. To output BOTH the raw dictionaries and + the formatted text, provide a list of exactly two column names (e.g., [page_data, page_text]). + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: client + description: The retrieval provider to use. + required: false + role: option + runtime_default: google_url_context + schema: + type: string + enum: + - google_url_context + - name: api_key + description: API key for the provider. Can also be set as an environment variable (e.g., GOOGLE_API_KEY). + required: false + role: credential + runtime_default: null + schema: + type: + - string + - 'null' + - name: prompt + description: Optional custom system prompt to guide the extraction behavior and output format. + required: false + role: option + runtime_default: null + schema: + type: + - string + - 'null' + - name: model_id + description: The specific model ID to use (default models/gemini-3-flash-preview). + required: false + role: model-reference + runtime_default: models/gemini-3-flash-preview + schema: + type: string + - name: output_format + description: The desired format for the extracted content. + required: false + role: column-output + runtime_default: json + schema: + type: string + enum: + - markdown + - json + - name: threads + description: Number of concurrent threads for parallel processing (default 10). + required: false + role: option + runtime_default: 10 + schema: + type: integer +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/search.py + title: WranglesPY search.retrieve_link_content implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/search/_sources/retrieve-link-content.md + title: Existing search.retrieve_link_content Markdown +--- + +# Retrieve Link Content + +Retrieves targeted content from web pages using LLM URL extraction. Can optionally output a second column containing a clean, human-readable text summary of the retrieved data. + +## Migrated examples +#### Retrieve Structured Page Content + +This template extracts JSON content from a URL. Returned fields depend on the page, prompt, and retrieval model. + +##### Recipe + +```yaml +wrangles: + - search.retrieve_link_content: + input: + - Product URL + output: + - Page Data + api_key: Your Google API key + client: google_url_context + output_format: json + prompt: Extract the product title and manufacturer. +``` + +
+ +
+ +##### Input Sample + +| Product URL | +| --- | +| https://example.com/products/6202 | + +
+ +
+ +##### Output Sample + +| Product URL | Page Data | +| --- | --- | +| https://example.com/products/6202 | `{"title": "6202 Bearing", "manufacturer": "SKF"}` | + +
+ +
+ +_Template based on the documented parameters; no published source example is currently available._ diff --git a/wrangles-docs/static/registry/wrangles/select/columns.md b/wrangles-docs/static/registry/wrangles/select/columns.md new file mode 100644 index 0000000..eaaa709 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/select/columns.md @@ -0,0 +1,91 @@ +--- +schema_version: '0.1' +type: wrangle +id: bca12c60-3957-4dc5-83f7-5ee460df2a11 +wrangle_name: columns +namespace: select +title: Columns +description: Select columns from the dataframe. +wrangle_key: select.columns +aliases: [] +slug: select/columns +status: active +visibility: public +tags: + - select + - columns +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.select.columns + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the column(s) to select. + required: true + role: column-selector + schema: + type: + - string + - integer + - array +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py + title: WranglesPY select.columns implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/columns.md + title: Existing select.columns Markdown +--- + +# Columns + +Select columns from the dataframe + +## Migrated examples +#### Selecting Columns + +##### Recipe + +```yaml +wrangles: + - select.columns: + input: Manufacturer +``` + +
+ +
+ +##### Input Sample + +| Part Number | Manufacturer | +| --- | --- | +| 1234 | SKF | +| 5678 | Timken | + +
+ +
+ +##### Output Sample + +| Manufacturer | +| --- | +| SKF | +| Timken | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/select/dictionary-element.md b/wrangles-docs/static/registry/wrangles/select/dictionary-element.md new file mode 100644 index 0000000..577ffe5 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/select/dictionary-element.md @@ -0,0 +1,322 @@ +--- +schema_version: '0.1' +type: wrangle +id: 5adaeada-6da8-464f-84cb-9fb5ecc17e48 +wrangle_name: dictionary_element +namespace: select +title: Dictionary Element +description: Select one or more element of a dictionary. +wrangle_key: select.dictionary_element +aliases: [] +slug: select/dictionary-element +status: active +visibility: public +tags: + - select + - dictionary-element +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.select.dictionary_element + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: element + description: >- + The key or keys from the dictionary to select. If a single key is provided, the value will be + returned If a lists of keys are selected, the result will be a new dictionary. + required: true + role: option + schema: + type: string + - name: output + description: Name of the output column. If omitted, the input column will be replaced. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: default + description: >- + Set the default value to return if the specified element doesn't exist. If selecting multiple + elements, a dict of defaults can be set. + required: false + role: fallback-value + runtime_default: '' + schema: + type: + - string + - number + - array + - object + - boolean + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py + title: WranglesPY select.dictionary_element implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/dictionary-element.md + title: Existing select.dictionary_element Markdown +--- + +# Dictionary Element + +Select one or more element of a dictionary. + +## Migrated examples +#### Selecting Dictionary Element Using Where + +##### Recipe + +```yaml +wrangles: + - select.dictionary_element: + input: Properties + output: Shapes + element: shapes + default: square + where: Part Number = 1234 +``` + +
+ +
+ +##### Input Sample + +| Properties | Part Number | +| --- | --- | +| \{'colours': ['red', 'white', 'blue'], 'shapes': 'round', 'materials': 'tungsten'\} | 1234 | +| \{'colours': ['green', 'yellow', 'orange'], 'shapes': 'square', 'materials': 'tungsten'\} | 5678 | + +
+ +
+ +##### Output Sample + +| Shapes | +| --- | +| round | +| | + +
+ +
+ +#### Selecting Multiple Dictionary Elements + +##### Recipe + +```yaml +wrangles: + - select.dictionary_element: + input: Properties + element: + - shapes + - materials +``` + +
+ +
+ +##### Input Sample + +| Properties | +| --- | +| \{'colours': ['red', 'white', 'blue'], 'shapes': 'round', 'materials': 'tungsten'\} | +| \{'colours': ['green', 'yellow', 'orange'], 'shapes': 'square', 'materials': 'tungsten'\} | + +
+ +
+ +##### Output Sample + +| Properties | +| --- | +| \{'shapes': 'round', 'materials': 'tungsten'\} | +| \{'shapes': 'square', 'materials': 'tungsten'\} | + +
+ +
+ +#### Selecting Multiple Dictionary Elements Using a Wildcard + +##### Recipe + +```yaml +wrangles: + - select.dictionary_element: + input: Properties + output: Output Dict + element: + - Col* +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| \{'Col1': 'A', 'Col2': 'B', 'Other3': 'C'\} | + +
+ +
+ +##### Output Sample + +| Column | Output Dict | +| --- | --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | \{'Col1': 'A', 'Col2': 'B'\} | + +
+ +
+ +#### Selecting Multiple Dictionary Elements Using Regex + +##### Recipe + +```yaml +wrangles: + - select.dictionary_element: + input: Properties + output: Output Dict + element: + - "regex: .*2" +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | + +
+ +
+ +##### Output Sample + +| Column | Output Dict | +| --- | --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | \{'Col2': 'B'\} | + +
+ +
+ +#### Selecting Elements While Renaming + +##### Recipe + +```yaml +wrangles: + - select.dictionary_element: + input: Properties + output: Output Dict + element: + - Col1: Column 1 + - Col2: Column 2 +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | + +
+ +
+ +##### Output Sample + +| Column | Output Dict | +| --- | --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | \{'Column 1': 'A', 'Column 2': 'B'\} | + +
+ +
+ +#### Using Default to Fill Missing Elements + +##### Recipe + +```yaml +wrangles: + - select.dictionary_element: + input: Properties + output: Output Dict + element: + - Col1 + - Col3 + default: + Col1: Z + Col3: Y +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | +| \{'Col1': 'D', 'Col2': 'E'\} | + +
+ +
+ +##### Output Sample + +| Column | Output Dict | +| --- | --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | \{'Col1': 'A', 'Col3': 'C'\} | +| \{'Col1': 'D', 'Col2': 'E'\} | \{'Col1': 'D', 'Col3': 'Y'\} | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/select/element.md b/wrangles-docs/static/registry/wrangles/select/element.md new file mode 100644 index 0000000..9cc5232 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/select/element.md @@ -0,0 +1,117 @@ +--- +schema_version: '0.1' +type: wrangle +id: 223d2f4e-3247-4189-8b6c-e73fe44c4266 +wrangle_name: element +namespace: select +title: Element +description: Select elements of lists or dicts using python syntax like col[0]['key']. +wrangle_key: select.element +aliases: [] +slug: select/element +status: active +visibility: public +tags: + - select + - element +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.select.element + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: >- + Name of the input column and sub elements This permits by index for lists or dict and by key + for dicts e.g. col[0]['key'] // [{"key":"val"}] -> "val". + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output column(s). + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: default + description: Set the default value to return if the specified element doesn't exist. + required: false + role: fallback-value + runtime_default: null + schema: + type: + - string + - number + - array + - object + - boolean + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py + title: WranglesPY select.element implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/element.md + title: Existing select.element Markdown +--- + +# Element + +Select elements of lists or dictionaries using Python syntax like `col[1:3]['key']`. + +## Migrated examples +#### Selecting The First Element + +##### Recipe + +```yaml +wrangles: + - select.element: + input: Column A[0] + output: First Element +``` + +
+ +
+ +##### Input Sample + +| Column A | +| --- | +| [A, 0.9] | +| [B, 0.8] | + +
+ +
+ +##### Output Sample + +| Column A | First Element | +| --- | --- | +| [A, 0.9] | A | +| [B, 0.8] | B | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/select/group-by.md b/wrangles-docs/static/registry/wrangles/select/group-by.md new file mode 100644 index 0000000..d1cbb50 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/select/group-by.md @@ -0,0 +1,277 @@ +--- +schema_version: '0.1' +type: wrangle +id: c0af10b1-423a-416c-8cb5-7e7fe1164964 +wrangle_name: group_by +namespace: select +title: Group By +description: Group and aggregate the data. +wrangle_key: select.group_by +aliases: [] +slug: select/group-by +status: active +visibility: public +tags: + - select + - group-by +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.select.group_by + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: by + description: List of the input columns to group on. + required: false + role: column-selector + runtime_default: [] + schema: + type: + - string + - array + - name: auto_rename_columns + description: >- + If true (default), aggregated column names include the operation as a suffix (e.g. Value.sum). + If false, column names are left as-is; use a dictionary entry to supply a custom output name + (e.g. - Value: Total). + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: list + description: Group and return all values for these column(s) as a list. + required: false + role: option + schema: + type: + - string + - array + - name: first + description: The first value for these column(s). + required: false + role: option + schema: + type: + - string + - array + - name: last + description: The last value for these column(s). + required: false + role: option + schema: + type: + - string + - array + - name: min + description: The minimum value for these column(s). + required: false + role: option + schema: + type: + - string + - array + - name: max + description: The maximum value for these column(s). + required: false + role: option + schema: + type: + - string + - array + - name: mean + description: The mean (average) value for these column(s). + required: false + role: option + schema: + type: + - string + - array + - name: median + description: The median value for these column(s). + required: false + role: option + schema: + type: + - string + - array + - name: nunique + description: The count of unique values for these column(s). + required: false + role: option + schema: + type: + - string + - array + - name: count + description: The count of values for these column(s). + required: false + role: option + schema: + type: + - string + - array + - name: counts + description: >- + Return a dictionary containing the count of each distinct value for these column(s). Keys are + converted to JSON-safe strings; missing values use the key "null" and booleans use lowercase + "true"/"false". + required: false + role: option + schema: + type: + - string + - array + - name: std + description: The standard deviation of values for these column(s). + required: false + role: option + schema: + type: + - string + - array + - name: sum + description: The total of values for these column(s). + required: false + role: option + schema: + type: + - string + - array + - name: any + description: Return true if any of the values for these column(s) are true. + required: false + role: option + schema: + type: + - string + - array + - name: all + description: Return true if all of the values for these column(s) are true. + required: false + role: option + schema: + type: + - string + - array + - name: p75 + description: Get a percentile. Note, you can use any integer here for the corresponding percentile. + required: false + role: option + schema: + type: + - string + - array + - name: custom.* + name_pattern: ^custom\.[A-Za-z_][A-Za-z0-9_]*$ + description: Placeholder for custom functions. Replace 'placeholder' with the name of the function. + required: false + role: option + schema: + type: + - string + - array +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py + title: WranglesPY select.group_by implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/group-by.md + title: Existing select.group_by Markdown +--- + +# Group By + +Group and aggregate the data + +## Migrated examples +#### Grouping By One Column + +##### Recipe + +```yaml +wrangles: + - select.group_by: + by: + - Product Type + sum: Quantity + mean: Price ($) +``` + +
+ +
+ +##### Input Sample + +| Product | Quantity | Price ($) | Product Type | +| --- | --- | --- | --- | +| Hammer | 3 | 12.99 | Hand Tools | +| Ratchet Wrench | 12 | 6.99 | Hand Tools | +| Cordless Drill | 2 | 49.99 | Power Tools | +| Reciprocating Saw | 7 | 29.99 | Power Tools | + +
+ +
+ +##### Output Sample + +| Product Type | Quantity.sum | Price ($).mean | +| --- | --- | --- | +| Hand Tools | 15 | 9.99 | +| Power Tools | 9 | 39.99 | + +
+ +
+ +#### Grouping With Custom Function Aggregation + +##### Recipe + +```yaml +wrangles: + - select.group_by: + by: Category + custom.sum_times_two: Quantity +``` + +
+ +
+ +##### Input Sample + +| Category | Quantity | +| --- | --- | +| Hand Tools | 3 | +| Hand Tools | 1 | +| Hand Tools | 2 | +| Power Tools | 4 | + +
+ +
+ +##### Output Sample + +| Category | Quantity.sum_times_two | +| --- | --- | +| Hand Tools | 12 | +| Power Tools | 4 | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/select/head.md b/wrangles-docs/static/registry/wrangles/select/head.md new file mode 100644 index 0000000..7a1c41b --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/select/head.md @@ -0,0 +1,90 @@ +--- +schema_version: '0.1' +type: wrangle +id: 237af1ec-db7d-415a-88b7-70586a2191fb +wrangle_name: head +namespace: select +title: Head +description: Return the first n rows. +wrangle_key: select.head +aliases: [] +slug: select/head +status: active +visibility: public +tags: + - select + - head +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.select.head + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: n + description: Number of rows to return. + required: true + role: option + schema: + type: integer +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py + title: WranglesPY select.head implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/head.md + title: Existing select.head Markdown +--- + +# Head + +Return the first n rows + +## Migrated examples +#### Selecting The First n Rows + +##### Recipe + +```yaml +wrangles: + - select.head: + n: 2 +``` + +
+ +
+ +##### Input Sample + +| Product | Manufacturer | +| --- | --- | +| Ball Bearing | SKF | +| Bearing Race | Timken | +| Needle Bearing | Acme Bearings | +| Roller Bearing | General Bearing Co. | + +
+ +
+ +##### Output Sample + +| Product | Manufacturer | +| --- | --- | +| Ball Bearing | SKF | +| Bearing Race | Timken | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/select/highest-confidence.md b/wrangles-docs/static/registry/wrangles/select/highest-confidence.md new file mode 100644 index 0000000..57a8b0b --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/select/highest-confidence.md @@ -0,0 +1,140 @@ +--- +schema_version: '0.1' +type: wrangle +id: 00aad85d-8cc8-42e5-86f3-e4ff916e8ac2 +wrangle_name: highest_confidence +namespace: select +title: Highest Confidence +description: >- + Select the option with the highest confidence from multiple columns. Inputs are expected to be of + the form [<>, <>]. +wrangle_key: select.highest_confidence +aliases: [] +slug: select/highest-confidence +status: active +visibility: public +tags: + - select + - highest-confidence +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.select.highest_confidence + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: List of the input columns to select from. + required: true + role: column-selector + schema: + type: array + - name: output + description: If two columns; the result and confidence. If one column; [result, confidence]. + required: true + role: column-output + schema: + type: + - string + - array +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py + title: WranglesPY select.highest_confidence implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/highest-confidence.md + title: Existing select.highest_confidence Markdown +--- + +# Highest Confidence + +Select the option with the highest confidence from multiple columns. Inputs are expected to be of the form `[value, confidence_score]`. + +## Migrated examples +#### Selecting Highest Confidence Single Output + +##### Recipe + +```yaml +wrangles: + - select.highest_confidence: + input: + - Col1 + - Col2 + - Col3 + output: Highest Confidence +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | Col3 | +| --- | --- | --- | +| ['A', 0.79] | ['B', 0.77] | ['C', 0.99] | + +
+ +
+ +##### Output Sample + +| Highest Confidence | +| --- | +| ['C', 0.99] | + +
+ +
+ +#### Selecting Highest Confidence Two Outputs + +##### Recipe + +```yaml +wrangles: + - select.highest_confidence: + input: + - Col1 + - Col2 + - Col3 + output: + - Item + - Confidence +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | Col3 | +| --- | --- | --- | +| ['A', 0.79] | ['B', 0.77] | ['C', 0.99] | + +
+ +
+ +##### Output Sample + +| Item | Confidence | +| --- | --- | +| C | 0.99 | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/select/left.md b/wrangles-docs/static/registry/wrangles/select/left.md new file mode 100644 index 0000000..6b97981 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/select/left.md @@ -0,0 +1,111 @@ +--- +schema_version: '0.1' +type: wrangle +id: 5cdd9857-0c77-43bf-80d7-d0a8cb6f980b +wrangle_name: left +namespace: select +title: Left +description: >- + Return characters from the left of text. Strings shorter than the length defined will be + unaffected. +wrangle_key: select.left +aliases: [] +slug: select/left +status: active +visibility: public +tags: + - select + - left +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.select.left + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the column(s) to edit. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: length + description: >- + Number of characters to include from the left. If negative, this will remove the specified + number of characters from the left. May not equal 0. + required: true + role: option + schema: + type: integer + - name: output + description: Name of the output column(s). + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py + title: WranglesPY select.left implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/left.md + title: Existing select.left Markdown +--- + +# Left + +Select characters from the left of the input. Using a negative length reverses the side of selection, selecting from the right. + +## Migrated examples +#### Selecting Three Leftmost Elements + +##### Recipe + +```yaml +wrangles: + - select.left: + input: Column + output: Result + length: 3 +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| pudding | + +
+ +
+ +##### Output Sample + +| Result | +| --- | +| pud | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/select/length.md b/wrangles-docs/static/registry/wrangles/select/length.md new file mode 100644 index 0000000..3bbbe19 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/select/length.md @@ -0,0 +1,102 @@ +--- +schema_version: '0.1' +type: wrangle +id: 4d7a5f66-0a4a-40e0-8298-d5c55754423d +wrangle_name: length +namespace: select +title: Length +description: >- + Calculate the lengths of data in a column. The length depends on the data type e.g. text will be + the length of the text, lists will be the number of elements in the list. +wrangle_key: select.length +aliases: [] +slug: select/length +status: active +visibility: public +tags: + - select + - length +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.select.length + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column(s). + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output column(s). + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py + title: WranglesPY select.length implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/length.md + title: Existing select.length Markdown +--- + +# Length + +Calculate the lengths of data in a column. The length depends on the data type e.g. text will be the length of the text, lists will be the number of elements in the list. + +## Migrated examples +#### Selecting the Length of Data Within a Column + +##### Recipe + +```yaml +wrangles: + - select.length: + input: Part Code + output: Part Code Length +``` + +
+ +
+ +##### Input Sample + +| Part Code | +| --- | +| 6202 | + +
+ +
+ +##### Output Sample + +| Part Code Length | +| --- | +| 4 | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/select/list-element.md b/wrangles-docs/static/registry/wrangles/select/list-element.md new file mode 100644 index 0000000..be97b68 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/select/list-element.md @@ -0,0 +1,126 @@ +--- +schema_version: '0.1' +type: wrangle +id: ec40495d-d29a-4f62-86dd-eafa43cf388a +wrangle_name: list_element +namespace: select +title: List Element +description: Select a numbered element of a list (zero indexed). +wrangle_key: select.list_element +aliases: [] +slug: select/list-element +status: active +visibility: public +tags: + - select + - list-element +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.select.list_element + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the input column. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output column. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: element + description: >- + The numbered element of the list to select. Starts from zero. This may use python slicing + syntax to select a subset of the list. + required: false + role: option + runtime_default: 0 + schema: + type: integer + - name: default + description: Set the default value to return if the specified element doesn't exist. + required: false + role: fallback-value + runtime_default: '' + schema: + type: + - string + - number + - array + - object + - boolean + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py + title: WranglesPY select.list_element implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/list-element.md + title: Existing select.list_element Markdown +--- + +# List Element + +Select a numbered element of a list (zero indexed). + +## Migrated examples +#### Selecting the Second Element in a List + +##### Recipe + +```yaml +wrangles: + - select.list_element: + input: Col1 + output: Second Element + element: 2 # Zero indexed + default: F +``` + +
+ +
+ +##### Input Sample + +| Col1 | +| --- | +| ['A', 'B', 'C'] | +| ['D', 'E'] | + +
+ +
+ +##### Output Sample + +| Third Element | +| --- | +| C | +| F | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/select/right.md b/wrangles-docs/static/registry/wrangles/select/right.md new file mode 100644 index 0000000..c080b2c --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/select/right.md @@ -0,0 +1,111 @@ +--- +schema_version: '0.1' +type: wrangle +id: 89ee82ec-3bc5-4bfa-899b-7a1260ef9bdb +wrangle_name: right +namespace: select +title: Right +description: >- + Return characters from the right of text. Strings shorter than the length defined will be + unaffected. +wrangle_key: select.right +aliases: [] +slug: select/right +status: active +visibility: public +tags: + - select + - right +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.select.right + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the column(s) to edit. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: length + description: >- + Number of characters to include from the right. If negative, this will remove the specified + number of characters from the right. May not equal 0. + required: true + role: option + schema: + type: integer + - name: output + description: Name of the output column(s). + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py + title: WranglesPY select.right implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/right.md + title: Existing select.right Markdown +--- + +# Right + +Select characters from the right of the input. Using a negative length reverses the side of selection, selecting from the left. + +## Migrated examples +#### Selecting the Three Rightmost Elements + +##### Recipe + +```yaml +wrangles: + - select.right: + input: Column + output: Result + length: 3 +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| pudding | + +
+ +
+ +##### Output Sample + +| Result | +| --- | +| ing | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/select/sample.md b/wrangles-docs/static/registry/wrangles/select/sample.md new file mode 100644 index 0000000..b200b89 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/select/sample.md @@ -0,0 +1,132 @@ +--- +schema_version: '0.1' +type: wrangle +id: 95a84ab6-a66e-450f-8a4a-7a87e3a77932 +wrangle_name: sample +namespace: select +title: Sample +description: Return a random sample of the rows. +wrangle_key: select.sample +aliases: [] +slug: select/sample +status: active +visibility: public +tags: + - select + - sample +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.select.sample + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: rows + description: >- + If a whole number, will select that number of rows. If a decimal between 0 and 1 will select + that fraction of the rows e.g. 0.1 => 10% of rows will be returned. + required: true + role: option + schema: + type: + - integer + - number + exclusiveMinimum: 0 +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py + title: WranglesPY select.sample implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/sample.md + title: Existing select.sample Markdown +--- + +# Sample + +Return a random sample of the rows + +## Migrated examples +#### Selecting 2 Random Rows + +##### Recipe + +```yaml +wrangles: + - select.sample: + rows: 2 +``` + +
+ +
+ +##### Input Sample + +| Product | Manufacturer | +| --- | --- | +| Ball Bearing | SKF | +| Bearing Race | Timken | +| Needle Bearing | Acme Bearings | +| Roller Bearing | General Bearing Co. | + +
+ +
+ +##### Output Sample + +| Product | Manufacturer | +| --- | --- | +| Ball Bearing | SKF | +| Needle Bearing | Acme Bearings | + +
+ +
+ +#### Selecting a Random 25% of All Rows + +##### Recipe + +```yaml +wrangles: + - select.sample: + rows: .25 +``` + +
+ +
+ +##### Input Sample + +| Product | Manufacturer | +| --- | --- | +| Ball Bearing | SKF | +| Bearing Race | Timken | +| Needle Bearing | Acme Bearings | +| Roller Bearing | General Bearing Co. | + +
+ +
+ +##### Output Sample + +| Product | Manufacturer | +| --- | --- | +| Needle Bearing | Acme Bearings | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/select/substring.md b/wrangles-docs/static/registry/wrangles/select/substring.md new file mode 100644 index 0000000..7e10467 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/select/substring.md @@ -0,0 +1,198 @@ +--- +schema_version: '0.1' +type: wrangle +id: 8befddf8-602e-4fa9-8f16-4c547210ebec +wrangle_name: substring +namespace: select +title: Substring +description: Return characters from the middle of text. +wrangle_key: select.substring +aliases: [] +slug: select/substring +status: active +visibility: public +tags: + - select + - substring +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.select.substring + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the column(s) to edit. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: start + description: >- + The position of the first character to select. If ommited will start from the beginning and + length must be provided. + required: false + role: option + runtime_default: null + schema: + type: + - integer + - 'null' + minimum: 1 + - name: length + description: >- + The length of the string to select. If ommited will select to the end of the string and start + must be provided. + required: false + role: option + runtime_default: null + schema: + type: + - integer + - 'null' + minimum: 1 + - name: output + description: Name of the output column(s). + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py + title: WranglesPY select.substring implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/substring.md + title: Existing select.substring Markdown +--- + +# Substring + +Return characters from the middle of text. + +## Migrated examples +#### Selecting a Substring With Start and Length + +##### Recipe + +```yaml +wrangles: + - select.substring: + input: Column + output: Result + start: 2 + length: 3 +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| pudding | + +
+ +
+ +##### Output Sample + +| Result | +| --- | +| udd | + +
+ +
+ +#### Selecting a Substring With Start Only + +##### Recipe + +```yaml +wrangles: + - select.substring: + input: Column + output: Result + start: 2 +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| pudding | + +
+ +
+ +##### Output Sample + +| Result | +| --- | +| udding | + +
+ +
+ +#### Selecting a Substring With Length Only + +##### Recipe + +```yaml +wrangles: + - select.substring: + input: Column + output: Result + length: 3 +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| pudding | + +
+ +
+ +##### Output Sample + +| Result | +| --- | +| pud | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/select/tail.md b/wrangles-docs/static/registry/wrangles/select/tail.md new file mode 100644 index 0000000..9464a8e --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/select/tail.md @@ -0,0 +1,90 @@ +--- +schema_version: '0.1' +type: wrangle +id: 60853759-c160-49a4-87eb-036516a9d823 +wrangle_name: tail +namespace: select +title: Tail +description: Return the last n rows. +wrangle_key: select.tail +aliases: [] +slug: select/tail +status: active +visibility: public +tags: + - select + - tail +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.select.tail + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: n + description: Number of rows to return. + required: true + role: option + schema: + type: integer +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py + title: WranglesPY select.tail implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/tail.md + title: Existing select.tail Markdown +--- + +# Tail + +Return the last n rows + +## Migrated examples +#### Selecting The Last n Rows + +##### Recipe + +```yaml +wrangles: + - select.tail: + n: 2 +``` + +
+ +
+ +##### Input Sample + +| Product | Manufacturer | +| --- | --- | +| Ball Bearing | SKF | +| Bearing Race | Timken | +| Needle Bearing | Acme Bearings | +| Roller Bearing | General Bearing Co. | + +
+ +
+ +##### Output Sample + +| Product | Manufacturer | +| --- | --- | +| Needle Bearing | Acme Bearings | +| Roller Bearing | General Bearing Co. | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/select/threshold.md b/wrangles-docs/static/registry/wrangles/select/threshold.md new file mode 100644 index 0000000..342440e --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/select/threshold.md @@ -0,0 +1,104 @@ +--- +schema_version: '0.1' +type: wrangle +id: af2a5dcc-0ec0-48d7-8fb4-f58d9c5391d2 +wrangle_name: threshold +namespace: select +title: Threshold +description: Select the first option if it exceeds a given threshold, else the second option. +wrangle_key: select.threshold +aliases: [] +slug: select/threshold +status: active +visibility: public +tags: + - select + - threshold +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.select.threshold + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: List of the input columns to select from. + required: true + role: column-selector + schema: + type: array + - name: output + description: Name of the output column. + required: true + role: column-output + schema: + type: string + - name: threshold + description: Threshold above which to choose the first option, otherwise the second. + required: true + role: option + schema: + type: number + minimum: 0 + maximum: 1 +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/select.py + title: WranglesPY select.threshold implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/select/_sources/threshold.md + title: Existing select.threshold Markdown +--- + +# Threshold + +Select the first option if it exceeds a given threshold, else the second option. + +## Migrated examples +#### Selecting Results Above a Threshold + +##### Recipe + +```yaml +wrangles: + - select.threshold: + input: + - Col1 + - Col2 + output: Result + threshold: .77 +``` + +
+ +
+ +##### Input Sample + +| Col1 | Col2 | +| --- | --- | +| ['A', 0.6] | ['B', 0.79] | + +
+ +
+ +##### Output Sample + +| Result | +| --- | +| B | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/split/dictionary.md b/wrangles-docs/static/registry/wrangles/split/dictionary.md new file mode 100644 index 0000000..131ac37 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/split/dictionary.md @@ -0,0 +1,308 @@ +--- +schema_version: '0.1' +type: wrangle +id: 06ca98e4-d026-43f7-84eb-af246d401ba9 +wrangle_name: dictionary +namespace: split +title: Dictionary +description: >- + Split one or more dictionaries into columns. The dictionary keys will be returned as the new + column headers. If the dictionaries contain overlapping values, the last value will be returned. +wrangle_key: split.dictionary +aliases: [] +slug: split/dictionary +status: active +visibility: public +tags: + - split + - dictionary +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.split.dictionary + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: >- + Name or lists of the column(s) containing dictionaries to be split. If providing multiple + dictionaries and the dictionaries contain overlapping values, the last value will be returned. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: >- + In columns output_format, this is an optional subset of keys to extract from the dictionary. + If not provided, all keys will be returned. Columns can be renamed with the following syntax: + output: - key1: new_column_name1 - key2: new_column_name2 In to_lists output_format, this must + be two output columns for the keys and values lists. If not provided, Keys and Values will be + used. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: default + description: Provide a set of default headings and values if they are not found within the input. + required: false + role: fallback-value + runtime_default: null + schema: + type: + - object + - 'null' + - name: output_format + description: >- + How to split the dictionary. columns creates one output column for each dictionary key. + to_lists creates two output columns containing lists of keys and values. + required: false + role: column-output + runtime_default: columns + schema: + type: string + enum: + - columns + - to_lists +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/split.py + title: WranglesPY split.dictionary implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/split/_sources/dictionary.md + title: Existing split.dictionary Markdown +--- + +# Dictionary + +Split a dictionary into columns. The dictionary keys are used as the new column headers. + +## Migrated examples +#### Splitting an Entire Dictionary + +##### Recipe + +```yaml +wrangles: + - split.dictionary: + input: Column + # Output not required +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | + +
+ +
+ +##### Output Sample + +| Col1 | Col2 | Col3 | +| --- | --- | --- | +| A | B | C | + +
+ +
+ +#### Choosing Specific Keys by Name + +##### Recipe + +```yaml +wrangles: + - split.dictionary: + input: Column + output: Col2 +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | + +
+ +
+ +##### Output Sample + +| Col2 | +| --- | +| B | + +
+ +
+ +#### Using a Wildcard Output to Choose Specific Keys + +##### Recipe + +```yaml +wrangles: + - split.dictionary: + input: Column + output: Col* +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| \{'Col1': 'A', 'Col2': 'B', 'Other': 'C'\} | + +
+ +
+ +##### Output Sample + +| Col1 | Col2 | +| --- | --- | +| A | B | + +
+ +
+ +#### Using Regular Expressions to Choose Specific Keys + +##### Recipe + +```yaml +wrangles: + - split.dictionary: + input: Column + output: "regex: .*3" +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | + +
+ +
+ +##### Output Sample + +| Col3 | +| --- | +| C | + +
+ +
+ +#### Choosing Specific Keys While Renaming the Output + +##### Recipe + +```yaml +wrangles: + - split.dictionary: + input: Column + output: + - Col1: Column 1 + - Col2: Column 2 +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | + +
+ +
+ +##### Output Sample + +| Column 1 | Column 2 | +| --- | --- | +| A | B | + +
+ +
+ +#### Using a Wildcard While Renaming + +##### Recipe + +```yaml +wrangles: + - split.dictionary: + input: Column + output: + - Col*: Column * +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| \{'Col1': 'A', 'Col2': 'B', 'Col3': 'C'\} | + +
+ +
+ +##### Output Sample + +| Column 1 | Column 2 | Column 3 | +| --- | --- | --- | +| A | B | C | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/split/list.md b/wrangles-docs/static/registry/wrangles/split/list.md new file mode 100644 index 0000000..c96388e --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/split/list.md @@ -0,0 +1,137 @@ +--- +schema_version: '0.1' +type: wrangle +id: 3260b9f7-aae2-499f-8004-d211c2cf643e +wrangle_name: list +namespace: split +title: List +description: Split a list in a single column to multiple columns. +wrangle_key: split.list +aliases: [] +slug: split/list +status: active +visibility: public +tags: + - split + - list +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.split.list + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the column to be split. + required: true + role: column-selector + schema: + type: + - string + - integer + - name: output + description: >- + Name of column(s) for the results. If providing a single column, use a wildcard (*) to + indicate a incrementing integer. + required: true + role: column-output + schema: + type: + - string + - array +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/split.py + title: WranglesPY split.list implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/split/_sources/list.md + title: Existing split.list Markdown +--- + +# List + +Split a list into multiple columns. If only one output is given, `split.list` returns the same list it was given, so output should be a list of columns or a column name with a wildcard (`*`). + +## Migrated examples +#### Using a Wildcard + +##### Recipe + +```yaml +wrangles: + - split.list: + input: Column + output: Column* +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| ['A', 'B', 'C'] | + +
+ +
+ +##### Output Sample + +| Column1 | Column2 | Column3 | +| --- | --- | --- | +| A | B | C | + +
+ +
+ +#### Named Columns + +##### Recipe + +```yaml +wrangles: + - split.list: + input: Column + output: + - Heading A + - Heading B + - Heading C +``` + +
+ +
+ +##### Input Sample + +| Column | +| --- | +| ['A', 'B', 'C'] | + +
+ +
+ +##### Output Sample + +| Heading A | Heading B | Heading C | +| --- | --- | --- | +| A | B | C | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/split/text.md b/wrangles-docs/static/registry/wrangles/split/text.md new file mode 100644 index 0000000..1d69806 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/split/text.md @@ -0,0 +1,298 @@ +--- +schema_version: '0.1' +type: wrangle +id: e76e43f7-d129-4bf8-87b4-a304a378b130 +wrangle_name: text +namespace: split +title: Text +description: Split a string to multiple columns or a list. +wrangle_key: split.text +aliases: [] +slug: split/text +status: active +visibility: public +tags: + - split + - text +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.split.text + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name of the column to be split. + required: true + role: column-selector + schema: + type: string + - name: output + description: >- + Name of the output column(s) If a single column is provided, the results will be returned as a + list If multiple columns are listed, the results will be separated into the columns. If + omitted, will overwrite the input. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: char + description: >- + Set the character(s) to split on. Default comma (,) Can also prefix with "regex:" to split on + a pattern. + required: false + role: option + runtime_default: ',' + schema: + type: string + - name: pad + description: >- + Choose whether to pad to ensure a consistent length. Default true if outputting to columns, + false for lists. + required: false + role: option + runtime_default: null + schema: + type: + - boolean + - 'null' + - name: element + description: >- + Select a specific element or range after splitting using slicing syntax. e.g. 0, ":5", "5:", + "2:8:2". + required: false + role: option + runtime_default: null + schema: + type: + - string + - integer + - 'null' + - name: inclusive + description: If true, include the split character in the output. Default False. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: skip_empty + description: Whether to skip empty values. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/split.py + title: WranglesPY split.text implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/split/_sources/text.md + title: Existing split.text Markdown +--- + +# Text + +Split text strings on certain characters. The text can be split into either multiple columns or a list. + +## Migrated examples +#### To a List + +##### Recipe + +```yaml +wrangles: + - split.text: + input: Column1 + output: Column2 + char: ', ' +``` + +
+ +
+ +##### Input Sample + +| Column1 | +| --- | +| Hello, Wrangles! | + +
+ +
+ +##### Output Sample + +| Column2 | +| --- | +| ['Hello', 'Wrangles!'] | + +
+ +
+ +#### Split Using Regex + +##### Recipe + +```yaml +# Split on x, case insensitive. +wrangles: + - split.text: + input: Col1 + output: Col2 + char: 'regex:(?i)x' +``` + +
+ +
+ +##### Input Sample + +| Col1 | +| --- | +| 1x2 | +| 1X2 | + +
+ +
+ +##### Output Sample + +| Col2 | +| --- | +| ['1', '2'] | +| ['1', '2'] | + +
+ +
+ +#### Slice the Output + +##### Recipe + +```yaml +wrangles: + - split.text: + input: Column1 + output: Column2 + char: ', ' + element: 0 +``` + +
+ +
+ +##### Input Sample + +| Column1 | +| --- | +| Hello, Wrangles! | + +
+ +
+ +##### Output Sample + +| Column2 | +| --- | +| Hello | + +
+ +
+ +#### Split to Columns (Wildcard) + +##### Recipe + +```yaml +wrangles: + - split.text: + input: Col + output: Col* # Optional + char: ', ' +``` + +
+ +
+ +##### Input Sample + +| Col | +| --- | +| Hello, Wrangles! | + +
+ +
+ +##### Output Sample + +| Col1 | Col2 | +| --- | --- | +| Hello | Wrangles! | + +
+ +
+ +#### Split to Columns (Named) + +##### Recipe + +```yaml +wrangles: + - split.text: + input: Col + output: + - Col 1 + - Col 2 + - Col 3 + char: ', ' +``` + +
+ +
+ +##### Input Sample + +| Col | +| --- | +| Wrangles, are, Cool! | + +
+ +
+ +##### Output Sample + +| Col 1 | Col 2 | Col 3 | +| --- | --- | --- | +| Wrangles | are | Cool! | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/split/tokenize.md b/wrangles-docs/static/registry/wrangles/split/tokenize.md new file mode 100644 index 0000000..bfd3a10 --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/split/tokenize.md @@ -0,0 +1,153 @@ +--- +schema_version: '0.1' +type: wrangle +id: 6cc88418-ae0c-43f6-84ee-31e0d5f838c3 +wrangle_name: tokenize +namespace: split +title: Tokenize +description: >- + Split text into tokens. A variety of methods are available. The default method is to split on + spaces. +wrangle_key: split.tokenize +aliases: [] +slug: split/tokenize +status: active +visibility: public +tags: + - split + - tokenize +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.split.tokenize + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Column(s) to be split into tokens. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name of the output column. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: method + description: >- + Method to split the list. Options include `space`, `boundary`, `boundary_ignore_space`, custom + functions as `custom.`, or regex patterns as `regex:`. + required: false + role: option + runtime_default: space + schema: + anyOf: + - type: string + enum: + - space + - boundary + - boundary_ignore_space + - type: string +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/split.py + title: WranglesPY split.tokenize implementation + - id: quasi-registry + resource: >- + https://github.com/wrangleworks/Wrangles-Docs/blob/main/wrangles-docs/wrangle-docs/split/_sources/tokenize.md + title: Existing split.tokenize Markdown +--- + +# Tokenize + +Tokenize elements in a list or string into individual tokens. + +## Migrated examples +#### Tokenizing a String + +##### Recipe + +```yaml +wrangles: + - split.tokenize: + input: Materials + output: Tokenized List +``` + +
+ +
+ +##### Input Sample + +| Materials | +| --- | +| Stainless Steel Oak Wood | + +
+ +
+ +##### Output Sample + +| Tokenized List | +| --- | +| ['Stainless', 'Steel', 'Oak', 'Wood'] | + +
+ +
+ + +#### Tokenizing a List + +##### Recipe + +```yaml +wrangles: + - split.tokenize: + input: Materials + output: Tokenized List +``` + +
+ +
+ +##### Input Sample + +| Materials | +| --- | +| ['Stainless Steel', 'Oak Wood'] | + +
+ +
+ +##### Output Sample + +| Tokenized List | +| --- | +| ['Stainless', 'Steel', 'Oak', 'Wood'] | + +
+ +
diff --git a/wrangles-docs/static/registry/wrangles/standardize/clean.md b/wrangles-docs/static/registry/wrangles/standardize/clean.md new file mode 100644 index 0000000..f8a7a9b --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/standardize/clean.md @@ -0,0 +1,149 @@ +--- +schema_version: '0.1' +type: wrangle +id: null +wrangle_name: clean +namespace: standardize +title: Standardize Clean +description: >- + Repair common encoding, Unicode, HTML character reference, control character, and whitespace + problems locally. +wrangle_key: standardize.clean +aliases: [] +slug: standardize/clean +status: active +visibility: public +tags: + - standardize + - clean +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.standardize.clean + contract_status: verified +access: + ai_powered: false + requires_account: false + requires_subscription: false + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name or list of input columns. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: output + description: Name or list of output columns. Defaults to overwriting input. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - integer + - array + - 'null' + - name: fix_encoding + description: Repair mojibake and other reversible encoding errors. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: unescape_html + description: >- + Decode HTML character references. Auto avoids decoding text that appears to contain HTML + markup. + required: false + role: option + runtime_default: auto + schema: + anyOf: + - type: boolean + - type: string + enum: + - auto + - name: normalization + description: Unicode normalization form. + required: false + role: option + runtime_default: NFC + schema: + type: string + enum: + - NFC + - NFKC + - NFD + - NFKD + - null + - name: fix_character_width + description: Normalize fullwidth and halfwidth characters. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: uncurl_quotes + description: Replace typographic quotes with straight quotes. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: remove_control_chars + description: Remove C0 and C1 control characters. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: collapse_whitespace + description: Collapse runs of Unicode whitespace. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: preserve_line_breaks + description: Preserve line breaks while collapsing other whitespace. + required: false + role: option + runtime_default: false + schema: + type: boolean + - name: trim + description: Remove leading and trailing whitespace. + required: false + role: option + runtime_default: true + schema: + type: boolean + - name: separator + description: Text used to join multiple input columns into one output. + required: false + role: option + runtime_default: ' ' + schema: + type: string +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/standardize.py + title: WranglesPY standardize.clean implementation +--- + +# Standardize Clean + +## Behavior + +Repair common encoding, Unicode, HTML character reference, control character, and whitespace problems locally. + +This first-pass guidance is derived from the callable signature and its embedded Python schema docstring. diff --git a/wrangles-docs/static/registry/wrangles/standardize/custom.md b/wrangles-docs/static/registry/wrangles/standardize/custom.md new file mode 100644 index 0000000..5f9e07c --- /dev/null +++ b/wrangles-docs/static/registry/wrangles/standardize/custom.md @@ -0,0 +1,81 @@ +--- +schema_version: '0.1' +type: wrangle +id: null +wrangle_name: custom +namespace: standardize +title: Standardize Custom +description: >- + Standardize data using a DIY or bespoke standardization wrangle. Requires WrangleWorks Account and + Subscription. +wrangle_key: standardize.custom +aliases: [] +slug: standardize/custom +status: active +visibility: public +tags: + - standardize + - custom +runtime: + package: wrangles + symbol: wrangles.recipe_wrangles.standardize.custom + contract_status: verified +access: + ai_powered: false + requires_account: true + requires_subscription: true + requires_external_api_key: false +capabilities: + if: true + where: true + where_params: true +parameters: + - name: input + description: Name or list of input columns. + required: true + role: column-selector + schema: + type: + - string + - integer + - array + - name: model_id + description: The ID of the wrangle to use (do not include 'find' and 'replace'). + required: true + role: model-reference + schema: + type: + - string + - array + - name: output + description: Name or list of output columns. + required: false + role: column-output + runtime_default: null + schema: + type: + - string + - array + - 'null' + - name: case_sensitive + description: Allows the wrangle to be case sensitive if set to True, default is False. + required: false + role: option + runtime_default: false + schema: + type: boolean +examples: [] +sources: + - id: runtime + resource: >- + https://github.com/wrangleworks/WranglesPY/blob/7916bf158e8b7e561270a1bea7b808f88956edc4/wrangles/recipe_wrangles/standardize.py + title: WranglesPY standardize.custom implementation +--- + +# Standardize Custom + +## Behavior + +Standardize data using a DIY or bespoke standardization wrangle. Requires WrangleWorks Account and Subscription. + +This first-pass guidance is derived from the callable signature and its embedded Python schema docstring. diff --git a/wrangles-docs/static/schemas/recipes/pilot/schema.json b/wrangles-docs/static/schemas/recipes/pilot/schema.json new file mode 100644 index 0000000..7491583 --- /dev/null +++ b/wrangles-docs/static/schemas/recipes/pilot/schema.json @@ -0,0 +1,6131 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://docs.wrangles.com/schemas/recipes/pilot/schema.json", + "title": "Wrangles Recipe Schema - Registry Pilot", + "description": "Pilot schema containing only the initial Registry entries.", + "$comment": "Not the production recipe schema. Generated from Registry version 0.1.0-pilot.", + "type": "object", + "additionalProperties": false, + "required": [ + "wrangles" + ], + "properties": { + "wrangles": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/$defs/wrangles/items" + } + } + }, + "$defs": { + "wrangles": { + "items": { + "type": "object", + "description": "One Registry-backed wrangle step.", + "minProperties": 1, + "maxProperties": 1, + "additionalProperties": false, + "patternProperties": { + "^custom\\..*": { + "type": "object" + }, + "^pandas\\..*": { + "type": "object" + } + }, + "properties": { + "accordion": { + "type": "object", + "description": "Apply a series of wrangles to column(s) containing lists. The wrangles will be applied to each element in the list and the results will be returned back as a list.", + "additionalProperties": false, + "properties": { + "wrangles": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/$defs/wrangles/items" + }, + "description": "List of wrangles to apply." + }, + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "The column(s) containing the list(s) that the wrangles will be applied to the elements of." + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Output of the wrangles to save back to the dataframe.", + "default": null + }, + "propagate": { + "type": [ + "string", + "array", + "null" + ], + "description": "Limit the column(s) that will be available to the wrangles and replicated for each element. If not specified, all columns will be propogated. This may be useful to limit the memory use for large datasets.", + "default": null + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "wrangles", + "input" + ] + }, + "batch": { + "type": "object", + "description": "Split the data into batches for executing a list of wrangles. Use this in situations such as where the intermediate data is too large to fit in memory.", + "additionalProperties": false, + "properties": { + "wrangles": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/$defs/wrangles/items" + }, + "description": "The wrangles to execute on the data. Each series of wrangles will be run against the data in batches of the size defined by batch_size." + }, + "batch_size": { + "type": "integer", + "description": "The number of rows to split each batch into.", + "default": 1000 + }, + "threads": { + "type": "integer", + "description": "The number of threads to use for parallel processing. Default 1.", + "default": 1 + }, + "on_error": { + "type": [ + "object", + "null" + ], + "description": "A dictionary of column_name: value to return if an error occurs while attempting to run a batch.", + "default": null + }, + "timeout": { + "type": [ + "number", + "null" + ], + "description": "The number of seconds to wait for a batch to complete before raising an error.", + "default": null + }, + "use_multiprocessing": { + "type": "boolean", + "description": "Use process-based workers instead of threads. This is an advanced runtime option.", + "default": false + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "wrangles" + ] + }, + "classify": { + "type": "object", + "description": "Run classify wrangles on the specified columns. Requires WrangleWorks Account and Subscription.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column." + }, + "model_id": { + "type": "string", + "description": "ID of the classification model to be used." + }, + "include_confidence": { + "type": "boolean", + "description": "For models that support it, include the confidence level in the output." + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "output", + "model_id" + ] + }, + "clean_whitespaces": { + "type": "object", + "description": "Condense multiple spaces to a single space and convert special space characters to a standard space.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input columns." + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name or list of output columns.", + "default": null + }, + "trim": { + "type": "boolean", + "description": "Whether to trim leading and trailing spaces. Default True.", + "default": true + }, + "remove_literals": { + "type": "boolean", + "description": "Whether to remove special space characters such as new lines etc. Default True.", + "default": true + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input" + ] + }, + "compare.lists": { + "type": "object", + "description": "Compare multiple lists and return the intersection, difference, or union.", + "additionalProperties": false, + "properties": { + "input": { + "type": "array", + "description": "List of input columns containing lists to compare." + }, + "output": { + "type": "string", + "description": "Name of the output column." + }, + "method": { + "type": "string", + "enum": [ + "intersection", + "difference", + "union" + ], + "description": "Type of comparison to perform.", + "default": "intersection" + }, + "remove_duplicates": { + "type": "boolean", + "description": "Remove duplicates from the result.", + "default": false + }, + "ignore_case": { + "type": "boolean", + "description": "Ignore case when comparing string items.", + "default": false + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "output" + ] + }, + "compare.text": { + "type": "object", + "description": "Compare two strings and return the intersection or difference, use overlap to find the matching characters between the two strings, or use similarity to get a numeric similarity score.", + "additionalProperties": false, + "properties": { + "input": { + "type": "array", + "description": "The columns to compare. First column is the base column." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "The column to output the results to. Must be a list of two column names [mask_column, ratio_column] when method is overlap and include_ratio is true; otherwise a single column name." + }, + "method": { + "type": "string", + "enum": [ + "difference", + "intersection", + "overlap", + "similarity" + ], + "description": "The type of comparison to perform (difference, intersection, overlap, similarity).", + "default": "difference" + }, + "char": { + "type": "string", + "description": "Character to split strings on for difference and intersection. Defaults to a space.", + "default": " " + }, + "non_match_char": { + "type": "string", + "description": "Character to use for non-matching characters when using overlap.", + "default": "*" + }, + "include_ratio": { + "type": "boolean", + "description": "Include the ratio of matching characters when using overlap.", + "default": false + }, + "decimal_places": { + "type": "integer", + "description": "Number of decimal places to round the overlap ratio to.", + "default": 3 + }, + "exact_match": { + "type": [ + "string", + "null" + ], + "description": "Value to use for exact matches when using overlap.", + "default": null + }, + "empty_a": { + "type": [ + "string", + "null" + ], + "description": "Value to use when input A is empty when using overlap.", + "default": null + }, + "empty_b": { + "type": [ + "string", + "null" + ], + "description": "Value to use when input B is empty when using overlap.", + "default": null + }, + "all_empty": { + "type": [ + "string", + "null" + ], + "description": "Value to use when both inputs are empty when using overlap.", + "default": null + }, + "case_sensitive": { + "type": "boolean", + "description": "Whether the comparison is case sensitive. Defaults to true.", + "default": false + }, + "metric": { + "type": "string", + "description": "Metric value accepted by the runtime.", + "default": "token_sort" + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "output" + ] + }, + "compute.case_when": { + "type": "object", + "description": "Assign values to a column based on conditional logic.", + "additionalProperties": false, + "properties": { + "output": { + "type": "string", + "description": "Name of the output column." + }, + "cases": { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "required": [ + "condition", + "value" + ], + "properties": { + "condition": { + "type": "string" + }, + "value": { + "type": [ + "string", + "number", + "integer", + "boolean" + ] + } + } + }, + "description": "List of conditions and corresponding values." + }, + "default": { + "type": [ + "string", + "number", + "integer", + "boolean", + "null" + ], + "description": "Value to assign if no conditions are met. Default None.", + "default": null + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "output", + "cases" + ] + }, + "compute.score_search_results": { + "type": "object", + "description": "Scores and filters search results based on progressive partial/exact matching. Can return dictionaries or a parallel list of formatted strings.", + "additionalProperties": false, + "properties": { + "input": { + "type": "array", + "description": "List of 3 to 5 columns -> [results, suppliers, part_codes, mpns (optional), descriptions (optional)]." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Output column for the dictionaries. If a list of 2 is provided, outputs [dicts_column, pretty_strings_column]." + }, + "must_match_part_code": { + "type": "boolean", + "description": "If true, filters out results that don't satisfy the allowed match types.", + "default": true + }, + "allow_mpn_exact": { + "type": "boolean", + "description": "Treat exact MPN matches as valid part code matches.", + "default": true + }, + "allow_mpn_partial": { + "type": "boolean", + "description": "Treat partial MPN matches as valid part code matches.", + "default": true + }, + "allow_other_exact": { + "type": "boolean", + "description": "Treat exact other part code matches as valid part code matches.", + "default": true + }, + "allow_other_partial": { + "type": "boolean", + "description": "Treat partial other part code matches as valid part code matches.", + "default": true + }, + "blacklist_keywords": { + "type": "string", + "description": "Comma-separated list or array of keywords to filter out URLs containing them.", + "default": "" + }, + "mpn_exact_score": { + "type": "number", + "description": "Mpn Exact Score value accepted by the runtime.", + "default": 8 + }, + "mpn_partial_base": { + "type": "number", + "description": "Mpn Partial Base value accepted by the runtime.", + "default": 4 + }, + "part_code_exact_score": { + "type": "number", + "description": "Part Code Exact Score value accepted by the runtime.", + "default": 6 + }, + "part_code_partial_base": { + "type": "number", + "description": "Part Code Partial Base value accepted by the runtime.", + "default": 2 + }, + "supplier_exact_score": { + "type": "number", + "description": "Supplier Exact Score value accepted by the runtime.", + "default": 3 + }, + "supplier_partial_base": { + "type": "number", + "description": "Supplier Partial Base value accepted by the runtime.", + "default": 1 + }, + "context_match_base": { + "type": "number", + "description": "Context Match Base value accepted by the runtime.", + "default": 2 + }, + "fuzzy_match_threshold": { + "type": "number", + "description": "Fuzzy Match Threshold value accepted by the runtime.", + "default": 0.8 + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "output" + ] + }, + "concurrent": { + "type": "object", + "description": "Run multiple wrangles concurrently rather than sequentially. Wrangles must specify output columns to be used concurrently. When using concurrent, Wrangles may not complete in a predictable order and it is not recommended to update overlapping columns with different wrangles.", + "additionalProperties": false, + "properties": { + "wrangles": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/$defs/wrangles/items" + }, + "description": "The wrangles section of a recipe to execute for each combination of variables." + }, + "max_concurrency": { + "type": "integer", + "minimum": 1, + "description": "The maximum number of wrangles to execute in parallel.", + "default": 10 + }, + "use_multiprocessing": { + "type": "boolean", + "description": "Use process-based workers instead of threads. This is an advanced runtime option.", + "default": false + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "wrangles" + ] + }, + "convert.case": { + "type": "object", + "description": "Change the letter case of text values.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "items": { + "type": [ + "string", + "integer" + ] + }, + "description": "Name, index, or list of input columns." + }, + "output": { + "type": [ + "string", + "array" + ], + "items": { + "type": "string" + }, + "description": "Name or list of output columns. If omitted, each input column is overwritten." + }, + "case": { + "type": "string", + "enum": [ + "lower", + "upper", + "title", + "sentence" + ], + "description": "Letter case to apply. Sentence case lowercases the value and capitalizes sentence starts.", + "default": "lower" + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + } + }, + "required": [ + "input" + ] + }, + "convert.data_type": { + "type": "object", + "description": "Convert values to strings, numbers, booleans, or datetimes.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "items": { + "type": [ + "string", + "integer" + ] + }, + "description": "Name, index, or list of input columns." + }, + "output": { + "type": [ + "string", + "array" + ], + "items": { + "type": "string" + }, + "description": "Name or list of output columns. If omitted, each input column is overwritten." + }, + "data_type": { + "type": "string", + "enum": [ + "str", + "float", + "int", + "bool", + "datetime" + ], + "description": "Data type to produce.", + "default": "str" + }, + "default": { + "type": [ + "string", + "number", + "array", + "object", + "boolean", + "null" + ], + "description": "Value returned when conversion fails. If omitted, the original value is retained.", + "default": null + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + } + }, + "required": [ + "input" + ] + }, + "convert.fraction_to_decimal": { + "type": "object", + "description": "Convert fractions to decimals.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "decimals": { + "type": "integer", + "description": "Number of decimals to round fraction.", + "default": 4 + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name of the output colum.", + "default": null + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input" + ] + }, + "convert.from_json": { + "type": "object", + "description": "Parse JSON text into lists, objects, scalars, booleans, or null values.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "items": { + "type": [ + "string", + "integer" + ] + }, + "description": "Name, index, or list of columns containing valid JSON text." + }, + "output": { + "type": [ + "string", + "array" + ], + "items": { + "type": "string" + }, + "description": "Name or list of output columns. If omitted, each input column is overwritten." + }, + "default": { + "type": [ + "string", + "number", + "array", + "object", + "boolean", + "null" + ], + "description": "Value returned for empty or invalid JSON. A list may supply one fallback per input column.", + "default": null + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + } + }, + "required": [ + "input" + ] + }, + "convert.from_yaml": { + "type": "object", + "description": "Convert a YAML representation into an object.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name of the output column. If omitted, the input column will be overwritten.", + "default": null + }, + "default": { + "type": [ + "string", + "array", + "object", + "number", + "boolean", + "null" + ], + "description": "Value to return if the row is empty or fails to be parsed as YAML. If input is a list, default may also be a list - either a single value to apply to all columns, or one value per input column.", + "default": null + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input" + ] + }, + "convert.to_json": { + "type": "object", + "description": "Convert an object to a JSON representation.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name of the output column. If omitted, the input column will be overwritten.", + "default": null + }, + "ensure_ascii": { + "type": "boolean", + "description": "If true, non-ASCII characters will be escaped. Default is false.", + "default": false + }, + "indent": { + "type": [ + "string", + "integer" + ], + "description": "If indent is a non-negative integer or string, then JSON array elements and object members will be pretty-printed with that indent level. An indent level of 0, negative, or \"\" will only insert newlines. None (the default) selects the most compact representation. Using a positive integer indent indents that many spaces per level. If indent is a string (such as '\\t'), that string is used to indent each level." + }, + "sort_keys": { + "type": "boolean", + "description": "If sort_keys is true (defaults to False), then the output of dictionaries will be sorted by key." + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input" + ] + }, + "convert.to_yaml": { + "type": "object", + "description": "Convert an object to a YAML representation.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name of the output column. If omitted, the input column will be overwritten.", + "default": null + }, + "sort_keys": { + "type": "boolean", + "description": "If sort_keys is true (default: False), then the output of dictionaries will be sorted by key.", + "default": false + }, + "allow_unicode": { + "type": "boolean", + "description": "Allow Unicode value accepted by the runtime.", + "default": true + }, + "indent": { + "type": "integer", + "description": "Specify the number of spaces for indentation to specify nested elements." + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input" + ] + }, + "copy": { + "type": "object", + "description": "Make a copy of a column or a list of columns.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array", + "null" + ], + "description": "Name of the input columns or columns.", + "default": null + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name of the output columns or columns.", + "default": null + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + } + }, + "create.bins": { + "type": "object", + "description": "Create a column that groups data into bins.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of input column." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of new column." + }, + "bins": { + "type": [ + "integer", + "array" + ], + "description": "Defines the number of equal-width bins in the range." + }, + "labels": { + "type": [ + "string", + "array", + "null" + ], + "description": "Labels for the returned bins.", + "default": null + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "output", + "bins" + ] + }, + "create.column": { + "type": "object", + "description": "Create column(s) with a user defined value. Defaults to None (empty).", + "additionalProperties": false, + "properties": { + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of names of new columns or column_name: value pairs." + }, + "value": { + "type": [ + "string", + "number", + "object", + "array", + "boolean", + "null" + ], + "description": "(Optional) Value(s) to add in the new column(s). If using a dictionary in output, value can only be a string.", + "default": null + }, + "value_if_exists": { + "type": "string", + "enum": [ + "existing", + "coalesce", + "new" + ], + "description": "Determines behaviour when the output column already exists. existing (default): leave the column unchanged. coalesce: fill empty/null cells with the new value, keeping non-null cells. new: overwrite the entire column with the new value.", + "default": "existing" + }, + "coalesce_value": { + "type": "string", + "enum": [ + "existing", + "new" + ], + "description": "Only used when value_if_exists is coalesce. Determines which side is preferred when both the existing and new values are non-empty. existing (default): keep the existing value, only fill empty/null cells with the new value. new: keep the new value, only fall back to the existing value where the new value is empty/null.", + "default": "existing" + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "output" + ] + }, + "create.embeddings": { + "type": "object", + "description": "Create an embedding based on text input.", + "additionalProperties": false, + "properties": { + "input": { + "type": "string", + "description": "The column of text to create the embeddings for." + }, + "api_key": { + "type": "string", + "description": "The API key." + }, + "output": { + "type": [ + "string", + "null" + ], + "description": "The output column the embeddings will be saved as.", + "default": null + }, + "batch_size": { + "type": "integer", + "description": "The number of rows to submit per individual request.", + "default": 100 + }, + "threads": { + "type": "integer", + "description": "The number of requests to submit in parallel. Each request contains the number of rows set as batch_size.", + "default": 10 + }, + "output_type": { + "type": "string", + "enum": [ + "numpy array", + "python list" + ], + "description": "Output the embeddings as a numpy array or a python list Default - python list.", + "default": "python list" + }, + "model": { + "type": "string", + "description": "The specific model to use to generate the embeddings.", + "default": "text-embedding-3-small" + }, + "retries": { + "type": "integer", + "description": "The number of times to retry if the request fails. This will apply exponential backoff to help with rate limiting.", + "default": 0 + }, + "url": { + "type": "string", + "description": "The endpoint to send embedding requests to. Defaults to the standard endpoint for the resolved provider. Setting a Jina URL without an explicit provider will automatically use Jina's request/response format.", + "default": "https://api.openai.com/v1/embeddings" + }, + "precision": { + "type": "string", + "enum": [ + "float16", + "float32" + ], + "description": "The precision of the embeddings. Default is float32. This should be used with output_type numpy array.", + "default": "float32" + }, + "provider": { + "type": [ + "string", + "null" + ], + "enum": [ + "openai", + "jina" + ], + "description": "Controls the request/response format for the embedding API. When omitted, inferred from url (jina.ai → jina, otherwise openai). Setting provider also sets the default url for that provider, so you only need one of provider or url for standard endpoints. Use both together only when pointing to a custom endpoint that uses a non-default provider's API format (e.g. a Jina-compatible proxy).", + "default": null + }, + "task": { + "type": [ + "string", + "null" + ], + "enum": [ + "retrieval.query", + "retrieval.passage", + "text-matching", + "classification", + "separation" + ], + "description": "The task type for the embedding model. Only applicable for the Jina provider. Selects the appropriate task-specific adapter.", + "default": null + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "api_key" + ] + }, + "create.guid": { + "type": "object", + "description": "Create column(s) with a GUID.", + "additionalProperties": false, + "properties": { + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of names of new columns." + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "output" + ] + }, + "create.hash": { + "type": "object", + "description": "Create a hash of a column.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of input column." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of new column." + }, + "method": { + "type": "string", + "enum": [ + "md5", + "sha1", + "sha256", + "sha512" + ], + "description": "The method to use to hash the input (Default: md5).", + "default": "md5" + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "output" + ] + }, + "create.index": { + "type": "object", + "description": "Create column(s) with an incremental index. e.g. 1,2,3...", + "additionalProperties": false, + "properties": { + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of names of new columns." + }, + "start": { + "type": "integer", + "description": "(Optional; default 1) Starting number for the index.", + "default": 1 + }, + "step": { + "type": "integer", + "description": "(Optional; default 1) Step between successive rows.", + "default": 1 + }, + "by": { + "type": [ + "string", + "array", + "null" + ], + "description": "Optional. Cluster the created indexes by one or more columns.", + "default": null + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "output" + ] + }, + "create.jinja": { + "type": "object", + "description": "Output text using a jinja template.", + "additionalProperties": false, + "properties": { + "template": { + "type": "object", + "additionalProperties": false, + "properties": { + "file": { + "type": "string" + }, + "column": { + "type": "string" + }, + "string": { + "type": "string" + } + }, + "description": "A dictionary which defines the template/location as well as the form which the template is input. If any keys use a space, they must be replaced with an underscore. Note: spaces within column names are replaced by underscores (_)." + }, + "output": { + "type": "array", + "description": "Name of the column to be output to." + }, + "input": { + "type": [ + "string", + "null" + ], + "description": "Specify a name of column containing a dictionary of elements to be used in jinja template. Otherwise, the column headers will be used as keys.", + "default": null + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "template", + "output" + ] + }, + "create.uuid": { + "type": "object", + "description": "Create column(s) with a UUID.", + "additionalProperties": false, + "properties": { + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of names of new columns." + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "output" + ] + }, + "date_calculator": { + "type": "object", + "description": "Add or Subtract time from a date.", + "additionalProperties": false, + "properties": { + "input": { + "type": "string", + "description": "Name of the dates column." + }, + "operation": { + "type": "string", + "enum": [ + "add", + "subtract" + ], + "description": "Date operation.", + "default": "add" + }, + "output": { + "type": [ + "string", + "null" + ], + "description": "Name of the output column of dates.", + "default": null + }, + "time_unit": { + "type": [ + "string", + "null" + ], + "enum": [ + "years", + "months", + "weeks", + "days", + "hours", + "minutes", + "seconds", + "milliseconds" + ], + "description": "Time unit for operation.", + "default": null + }, + "time_value": { + "type": [ + "number", + "null" + ], + "description": "Time unit value for operation.", + "default": null + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input" + ] + }, + "drop": { + "type": "object", + "description": "Drop (Delete) selected column(s).", + "additionalProperties": false, + "properties": { + "columns": { + "type": [ + "string", + "array" + ], + "description": "Name of the column(s) to drop." + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + } + }, + "required": [ + "columns" + ] + }, + "explode": { + "type": "object", + "description": "Explode a column of lists into rows.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the column(s) to explode. If multiple columns are included they must contain lists of the same length." + }, + "reset_index": { + "type": "boolean", + "description": "Reset the index after exploding. Default True.", + "default": true + }, + "drop_empty": { + "type": "boolean", + "description": "If true, any rows that contain an empty list will be dropped. If false, rows that contain empty lists will keep 1 row with an empty value. Default False.", + "default": false + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input" + ] + }, + "extract.address": { + "type": "object", + "description": "Extract parts of addresses. Requires WrangleWorks Account.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column." + }, + "dataType": { + "type": "string", + "enum": [ + "streets", + "cities", + "regions", + "countries" + ], + "description": "Specific part of the address to extract." + }, + "output_format": { + "type": [ + "string", + "null" + ], + "enum": [ + "list", + "columns", + "concatenate" + ], + "description": "Format of the extract output.", + "default": null + }, + "char": { + "type": "string", + "description": "Character to use when output_format is concatenate.", + "default": ", " + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "output", + "dataType" + ] + }, + "extract.ai": { + "type": "object", + "description": "Extract structured data from each input row using an AI model. Define the desired fields with output, or reuse a saved definition with model_id.", + "additionalProperties": false, + "properties": { + "api_key": { + "type": "string", + "description": "OpenAI API key used for this wrangle, normally supplied through a recipe variable." + }, + "input": { + "type": [ + "array", + "null" + ], + "items": { + "type": [ + "string", + "integer" + ] + }, + "description": "Input column name, column index, or list of columns supplied together as DATA for each row. If omitted, all dataframe columns are supplied.", + "default": null + }, + "output": { + "type": [ + "string", + "array", + "object", + "null" + ], + "patternProperties": { + "^[a-zA-Z0-9 _-]+$": { + "type": [ + "object", + "string" + ], + "properties": { + "type": { + "type": "string", + "description": "JSON data type required for this field. If omitted, common scalar types are accepted. Fields allow null by default.", + "enum": [ + "string", + "number", + "integer", + "boolean", + "null", + "object", + "array" + ] + }, + "enum": { + "type": "array" + }, + "examples": { + "type": [ + "array", + "object", + "string", + "number", + "integer", + "boolean", + "null" + ], + "properties": { + "name": { + "type": "string" + }, + "notes": { + "type": "string" + }, + "input": {}, + "output": {} + }, + "items": { + "anyOf": [ + { + "type": "object", + "required": [ + "input", + "output" + ], + "properties": { + "name": { + "type": "string" + }, + "notes": { + "type": "string" + }, + "input": {}, + "output": {} + } + }, + {} + ] + } + }, + "properties": { + "type": [ + "object", + "array", + "string" + ] + }, + "required": { + "type": [ + "array", + "string" + ] + }, + "additionalProperties": { + "type": [ + "boolean", + "object" + ] + }, + "items": { + "type": "object" + }, + "nullable": { + "type": "boolean" + } + } + } + }, + "description": "Desired extraction. Use an object keyed by output column name for structured fields, a string for one prompted value, or an array of field names/definitions. Each field may use the schema options below.", + "default": null + }, + "model_id": { + "type": [ + "string", + "null" + ], + "description": "ID of a saved extract.ai definition. Use it instead of defining an output schema. When output is also supplied with model_id in a recipe, output names the destination column or columns for the saved fields.", + "default": null + }, + "record_examples": { + "type": [ + "array", + "object", + "null" + ], + "required": [ + "input", + "output" + ], + "properties": { + "name": { + "type": "string" + }, + "notes": { + "type": "string" + }, + "input": {}, + "output": {} + }, + "items": { + "type": "object", + "required": [ + "input", + "output" + ], + "properties": { + "name": { + "type": "string" + }, + "notes": { + "type": "string" + }, + "input": {}, + "output": {} + } + }, + "description": "Whole-record examples. Each example has a separate input value or record and the complete expected output record. Optional name and notes provide model-visible context. Use {name: ..., notes: ..., input: ..., output: ...}. Omitted nullable output fields are completed with null. Required non-null nested properties must be supplied. This differs from examples nested under one output field, which teach only that field.", + "default": null + }, + "output_format": { + "type": [ + "string", + "null" + ], + "enum": [ + "dictionary", + "columns", + "concatenate" + ], + "description": "How extracted fields are written. columns writes one dataframe column per field (default); dictionary keeps one object; concatenate joins fields into one string using char.", + "default": null + }, + "char": { + "type": "string", + "description": "Separator used only when output_format is concatenate. Defaults to comma-space.", + "default": ", " + }, + "web_search": { + "type": "boolean", + "description": "Enable OpenAI Responses web search; the model decides when searching helps. When true, every row also receives web_search_sources: a deduplicated list of {title, url} objects in source order, or an empty list when no source was used. This reserved column is automatic. Requires protocol responses. Defaults to false.", + "default": false + }, + "instructions": { + "type": [ + "string", + "array", + "null" + ], + "items": { + "type": "string" + }, + "description": "Additional guidance applied to every input row. Use this for decision rules, evidence priorities, normalization requirements, or other behavior that applies to the complete extraction.", + "default": null + }, + "model": { + "type": "string", + "description": "OpenAI model ID for this call. If omitted, uses the configured extract.ai default; a saved model definition may supply its own model." + }, + "threads": { + "type": "integer", + "minimum": 1, + "description": "Maximum number of row-level requests sent in parallel. The configured default is 32." + }, + "timeout": { + "type": "number", + "exclusiveMinimum": 0, + "description": "Maximum seconds for one HTTP attempt. The configured default is 12; deadline can end the overall call sooner." + }, + "retries": { + "type": "integer", + "minimum": 0, + "description": "Number of additional attempts after a retryable failure. The configured default is 1. Backoff and request timeouts remain bounded by deadline." + }, + "url": { + "type": "string", + "description": "Override the endpoint for the selected protocol. A chat/completions URL selects the legacy protocol only when protocol is omitted; new recipes should use the configured Responses endpoint." + }, + "provider": { + "type": "string", + "enum": [ + "openai" + ], + "description": "AI service provider. Currently only OpenAI is supported." + }, + "protocol": { + "type": "string", + "enum": [ + "responses", + "chat_completions" + ], + "description": "OpenAI API protocol. Responses is the configured default and is required for web_search; chat_completions remains available for legacy definitions." + }, + "deadline": { + "type": "number", + "exclusiveMinimum": 0, + "description": "Total seconds allowed for the entire wrangle call, including queued work, retries, and backoff. The configured default is 15." + }, + "store": { + "type": "boolean", + "description": "Whether OpenAI may store Responses API results. Defaults to false." + }, + "cache": { + "type": "boolean", + "description": "Reuse identical successful results from the bounded warm-instance cache. Defaults to true. Set false when fresh model or web results are required." + }, + "cache_ttl": { + "type": "number", + "exclusiveMinimum": 0, + "description": "Maximum age in seconds for a cached result used by this call. Applies to extracted values and web_search_sources together." + }, + "strict": { + "type": "boolean", + "description": "Require OpenAI structured-output strict mode. Defaults to true. Definitions with dynamic dictionary keys automatically switch to non-strict provider mode and are still validated locally." + }, + "reasoning": { + "type": "object", + "properties": { + "effort": { + "type": "string", + "enum": [ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh" + ] + } + }, + "description": "Responses API reasoning controls. Set effort for reasoning-capable models. The configured default is none when that model supports it; otherwise the provider default applies." + }, + "verbosity": { + "type": "string", + "enum": [ + "low", + "medium", + "high" + ], + "description": "Responses API text verbosity for compatible models. Defaults to low when supported; ignored with a warning for incompatible models." + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "api_key" + ] + }, + "extract.attributes": { + "type": "object", + "description": "Extract numeric attributes from the input such as weights or lengths. Requires WrangleWorks Account.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column." + }, + "responseContent": { + "type": "string", + "enum": [ + "span", + "object" + ], + "description": "Span - returns the text found. object - returns an object with the value and unit.", + "default": "span" + }, + "attribute_type": { + "type": [ + "string", + "null" + ], + "enum": [ + "angle", + "area", + "capacitance", + "charge", + "current", + "data transfer rate", + "electrical conductance", + "electrical resistance", + "energy", + "force", + "frequency", + "inductance", + "instance frequency", + "length", + "luminous flux", + "weight", + "power", + "pressure", + "speed", + "velocity", + "temperature", + "time", + "voltage", + "volume", + "volumetric flow" + ], + "description": "Request only a specific type of attribute.", + "default": null + }, + "desired_unit": { + "type": [ + "string", + "null" + ], + "description": "Convert the extracted unit to the desired unit.", + "default": null + }, + "bound": { + "type": "string", + "enum": [ + "min", + "mid", + "max" + ], + "description": "When returning an object, if the input is a range (e.g. 10-20mm) set the value to return. min, mid or max. Default mid.", + "default": "mid" + }, + "first_element": { + "type": "boolean", + "description": "Get the first element from results.", + "default": false + }, + "output_format": { + "type": [ + "string", + "null" + ], + "enum": [ + "list", + "dictionary", + "columns", + "concatenate" + ], + "description": "Format of the extract output.", + "default": null + }, + "char": { + "type": "string", + "description": "Character to use when output_format is concatenate.", + "default": ", " + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "output" + ] + }, + "extract.brackets": { + "type": "object", + "description": "Extract text properties in brackets from the input.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output columns." + }, + "find": { + "type": [ + "string", + "array" + ], + "description": "(Optional) The type of brackets to find (round '()', square '[]', curly '{}', angled '<>'). Default is all brackets.", + "default": "all" + }, + "include_brackets": { + "type": "boolean", + "description": "(Optional) Include the brackets in the output.", + "default": false + }, + "output_format": { + "type": [ + "string", + "null" + ], + "enum": [ + "list", + "columns", + "concatenate" + ], + "description": "Format of the extract output.", + "default": null + }, + "char": { + "type": "string", + "description": "Character to use when output_format is concatenate.", + "default": ", " + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "output" + ] + }, + "extract.codes": { + "type": "object", + "description": "Extract alphanumeric codes from the input. Requires WrangleWorks Account.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input columns." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of output columns." + }, + "first_element": { + "type": "boolean", + "description": "Get the first element from results.", + "default": false + }, + "output_format": { + "type": [ + "string", + "null" + ], + "enum": [ + "list", + "columns", + "concatenate" + ], + "description": "Format of the extract output.", + "default": null + }, + "char": { + "type": "string", + "description": "Character to use when output_format is concatenate.", + "default": ", " + }, + "min_length": { + "type": [ + "integer", + "string" + ], + "description": "Minimum length of allowed results." + }, + "max_length": { + "type": [ + "integer", + "string" + ], + "description": "Maximum length of allowed results." + }, + "strategy": { + "type": "string", + "enum": [ + "lenient", + "balanced", + "strict" + ], + "description": "Controls filtering of likely false positives such as measurements. Lenient skips this filter; balanced and strict currently apply the same filter. Default is balanced. Unless min_length is provided, minimum lengths default to 3 for lenient, 4 for balanced, and 5 for strict." + }, + "sort_order": { + "type": "string", + "enum": [ + "input", + "longest", + "shortest" + ], + "description": "Default is input order. Also allows longest or shortest." + }, + "disallowed_patterns": { + "type": "string", + "description": "A pattern or JSON array of regex patterns to not include in the found codes." + }, + "include_multi_part_tokens": { + "type": "boolean", + "description": "Whether to include multi-part tokens that have a space. Default True." + }, + "extract_raw": { + "type": "boolean", + "description": "Whether to return tokens with their adjacent non-whitespace characters included, rather than the cleaned token. Default False." + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "output" + ] + }, + "extract.custom": { + "type": "object", + "description": "Extract data from the input using a DIY or bespoke extraction wrangle. Requires WrangleWorks Account and Subscription.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input columns." + }, + "model_id": { + "type": [ + "string", + "array" + ], + "description": "The ID of the wrangle to use." + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name or list of output columns.", + "default": null + }, + "use_labels": { + "type": "boolean", + "description": "Use Labels in the extract output {label: value}.", + "default": false + }, + "first_element": { + "type": "boolean", + "description": "Get the first element from results.", + "default": false + }, + "case_sensitive": { + "type": "boolean", + "description": "Allows the wrangle to be case sensitive if set to True, default is False.", + "default": false + }, + "extract_raw": { + "type": "boolean", + "description": "Extract the raw data from the wrangle.", + "default": false + }, + "use_spellcheck": { + "type": "boolean", + "description": "Use spellcheck to also find minor mispellings compared to the reference data.", + "default": false + }, + "include_empty_labels": { + "type": "boolean", + "description": "Include labels with no found values in the output when using use_labels=True.", + "default": true + }, + "sort": { + "type": "string", + "enum": [ + "training_order", + "input_order", + "longest", + "shortest", + "alphabetical", + "reverse_alphabetical", + "ascending", + "descending" + ], + "description": "Sort the results.", + "default": "training_order" + }, + "output_format": { + "type": [ + "string", + "null" + ], + "enum": [ + "list", + "dictionary", + "columns", + "concatenate" + ], + "description": "Format of the extract output.", + "default": null + }, + "char": { + "type": "string", + "description": "Character to use when output_format is concatenate.", + "default": ", " + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "model_id" + ] + }, + "extract.date_properties": { + "type": "object", + "description": "Extract date properties from a date (day, month, year, etc...).", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "property": { + "type": "string", + "enum": [ + "day", + "day_of_year", + "month", + "month_name", + "weekday", + "week_day_name", + "week_year", + "quarter" + ], + "description": "Property to extract from date." + }, + "output": { + "type": [ + "string", + "null" + ], + "description": "Name of the output columns.", + "default": null + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "property" + ] + }, + "extract.date_range": { + "type": "object", + "description": "Extract date range frequency from two dates.", + "additionalProperties": false, + "properties": { + "start_time": { + "type": "string", + "description": "Name of the start date column." + }, + "end_time": { + "type": "string", + "description": "Name of the end date column." + }, + "output": { + "type": "string", + "description": "Name of the output column." + }, + "range": { + "type": "string", + "enum": [ + "business days", + "days", + "weeks", + "months", + "semi months", + "business month ends", + "month starts", + "semi month starts", + "business month starts", + "quarters", + "quarter starts", + "years", + "business hours", + "hours", + "minutes", + "seconds", + "milliseconds" + ], + "description": "Type of frequency to count." + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "start_time", + "end_time", + "output" + ] + }, + "extract.html": { + "type": "object", + "description": "Extract elements from strings containing html. Requires WrangleWorks Account.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input columns." + }, + "data_type": { + "type": "string", + "enum": [ + "text", + "links" + ], + "description": "The type of data to extract." + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name or list of output columns.", + "default": null + }, + "output_format": { + "type": [ + "string", + "null" + ], + "enum": [ + "list", + "columns", + "concatenate" + ], + "description": "Format of the extract output.", + "default": null + }, + "char": { + "type": "string", + "description": "Character to use when output_format is concatenate.", + "default": ", " + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "data_type" + ] + }, + "extract.properties": { + "type": "object", + "description": "Extract text properties from the input. Requires WrangleWorks Account.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output columns." + }, + "property_type": { + "type": [ + "string", + "null" + ], + "enum": [ + "Colours", + "Materials", + "Shapes", + "Standards" + ], + "description": "The specific type of properties to extract.", + "default": null + }, + "return_data_type": { + "type": "string", + "enum": [ + "list", + "string" + ], + "description": "Legacy format option. Prefer output_format.", + "default": "list" + }, + "first_element": { + "type": "boolean", + "description": "Get the first element from results.", + "default": false + }, + "output_format": { + "type": [ + "string", + "null" + ], + "enum": [ + "list", + "dictionary", + "columns", + "concatenate" + ], + "description": "Format of the extract output.", + "default": null + }, + "char": { + "type": "string", + "description": "Character to use when output_format is concatenate.", + "default": ", " + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "output" + ] + }, + "extract.regex": { + "type": "object", + "description": "Extract matches or specific capture groups using regex.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column(s)." + }, + "find": { + "type": "string", + "description": "Pattern to find using regex." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column(s)." + }, + "output_pattern": { + "type": [ + "string", + "null" + ], + "description": "Specifies the format to output matches and specific capture groups using backreferences (e.g., `\\1`, `\\2`). Default is to return entire matches. **Example**: For a regex pattern `r'(\\d+)\\s(\\w+)'` and `output_pattern = '\\2 \\1'`, with input `'120 volt'`, the output would be `'volt 120'`.", + "default": null + }, + "first_element": { + "type": "boolean", + "description": "Get the first element from results.", + "default": false + }, + "output_format": { + "type": [ + "string", + "null" + ], + "enum": [ + "list", + "columns", + "concatenate" + ], + "description": "Format of the extract output.", + "default": null + }, + "char": { + "type": "string", + "description": "Character to use when output_format is concatenate.", + "default": ", " + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "find", + "output" + ] + }, + "filter": { + "type": "object", + "description": "Filter the dataframe based on the contents. If multiple filters are specified, all must be correct. For complex filters, use the where parameter.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the column to filter on. If multiple are provided, all must match the criteria.", + "default": [] + }, + "equal": { + "type": [ + "string", + "array", + "null" + ], + "description": "Select rows where the values equal a given value.", + "default": null + }, + "not_equal": { + "type": [ + "string", + "array", + "null" + ], + "description": "Select rows where the values do not equal a given value.", + "default": null + }, + "is_in": { + "type": [ + "string", + "array", + "null" + ], + "description": "Select rows where the values are in a given list.", + "default": null + }, + "not_in": { + "type": [ + "string", + "array", + "null" + ], + "description": "Select rows where the values are not in a given list.", + "default": null + }, + "greater_than": { + "type": [ + "integer", + "number", + "null" + ], + "description": "Select rows where the values are greater than a specified value. Does include the value itself.", + "default": null + }, + "greater_than_equal_to": { + "type": [ + "integer", + "number", + "null" + ], + "description": "Select rows where the values are greater than a specified value. Does include the value itself.", + "default": null + }, + "less_than": { + "type": [ + "integer", + "number", + "null" + ], + "description": "Select rows where the values are less than a specified value. Does not include the value itself.", + "default": null + }, + "less_than_equal_to": { + "type": [ + "integer", + "number", + "null" + ], + "description": "Select rows where the values are less than a specified value. Does include the value itself.", + "default": null + }, + "between": { + "type": [ + "array", + "null" + ], + "description": "Value or list of values to filter that are in between two parameter values.", + "default": null + }, + "contains": { + "type": [ + "string", + "null" + ], + "description": "Select rows where the input contains the value. Allows regular expressions.", + "default": null + }, + "not_contains": { + "type": [ + "string", + "null" + ], + "description": "Select rows where the input does not contain the value. Allows regular expressions.", + "default": null + }, + "is_null": { + "type": [ + "boolean", + "null" + ], + "description": "If true, select all rows where the value is NULL. If false, where is not NULL.", + "default": null + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + } + }, + "format.dates": { + "type": "object", + "description": "Format a date.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "format": { + "type": "string", + "description": "String pattern to format date." + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name of the output column.", + "default": null + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "format" + ] + }, + "format.pad": { + "type": "object", + "description": "Pad a string to a fixed length.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "pad_length": { + "type": "integer", + "description": "Length for the output." + }, + "side": { + "type": "string", + "description": "Side from which to fill resulting string." + }, + "char": { + "type": "string", + "description": "The character to pad the input with." + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name of the output column.", + "default": null + }, + "skip_empty": { + "type": "boolean", + "description": "If true, skip padding for empty or whitespace-only values.", + "default": false + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "pad_length", + "side", + "char" + ] + }, + "format.prefix": { + "type": "object", + "description": "Add a prefix to a column.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "value": { + "type": [ + "string", + "integer", + "number" + ], + "description": "Prefix value to add." + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "(Optional) Name of the output column.", + "default": null + }, + "skip_empty": { + "type": "boolean", + "description": "Whether to skip empty values.", + "default": false + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "value" + ] + }, + "format.price_breaks": { + "type": "object", + "description": "Expand non-empty price-break cells into paired category and value columns.", + "additionalProperties": false, + "properties": { + "input": { + "type": "array", + "description": "Name, index, or list of input columns." + }, + "categoryLabel": { + "type": "string", + "description": "Prefix for output columns that identify the source price-break category." + }, + "valueLabel": { + "type": "string", + "description": "Prefix for output columns that contain the corresponding price-break value." + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "categoryLabel", + "valueLabel" + ] + }, + "format.remove_duplicates": { + "type": "object", + "description": "Remove duplicates from a list. Preserves input order.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name of the output column.", + "default": null + }, + "ignore_case": { + "type": "boolean", + "description": "Ignore case when removing duplicates.", + "default": false + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input" + ] + }, + "format.significant_figures": { + "type": "object", + "description": "Format a value to a specific number of significant figures.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "significant_figures": { + "type": "integer", + "description": "Number of significant figures to format to. Default is 3.", + "default": 3 + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name of the output column.", + "default": null + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input" + ] + }, + "format.suffix": { + "type": "object", + "description": "Add a suffix to a column.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "value": { + "type": [ + "string", + "integer", + "number", + "array" + ], + "description": "Suffix value to add." + }, + "output": { + "type": [ + "string", + "null" + ], + "description": "(Optional) Name of the output column.", + "default": null + }, + "skip_empty": { + "type": "boolean", + "description": "Whether to skip empty values.", + "default": false + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "value" + ] + }, + "format.trim": { + "type": "object", + "description": "Remove excess whitespace at the start and end of text.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name of the output column.", + "default": null + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input" + ] + }, + "generate.ai": { + "type": "object", + "description": "Generate structured AI output for each recipe row.", + "additionalProperties": false, + "properties": { + "api_key": { + "type": "string", + "description": "OpenAI-compatible API key." + }, + "output": { + "type": [ + "string", + "array", + "object" + ], + "description": "Target schema; string/array shorthands are expanded automatically." + }, + "input": { + "type": [ + "string", + "array", + "null" + ], + "description": "Column(s) to concatenate into the prompt (defaults to all columns).", + "default": null + }, + "model": { + "type": "string", + "description": "Responses model name (e.g. gpt-5-mini).", + "default": "gpt-5" + }, + "threads": { + "type": "integer", + "description": "Maximum concurrent requests (default 20).", + "default": 20 + }, + "timeout": { + "type": "integer", + "description": "Per-request timeout in seconds.", + "default": 90 + }, + "retries": { + "type": "integer", + "description": "Number of retry attempts on failure.", + "default": 0 + }, + "messages": { + "type": [ + "array", + "object", + "null" + ], + "description": "Optional extra messages forwarded to the inner generate helper.", + "default": null + }, + "url": { + "type": "string", + "description": "Override for the OpenAI-compatible endpoint.", + "default": "https://api.openai.com/v1/responses" + }, + "strict": { + "type": "boolean", + "description": "Enforce JSON-schema validation on the response.", + "default": false + }, + "web_search": { + "type": "boolean", + "description": "Enable DuckDuckGo context lookup per row.", + "default": false + }, + "reasoning": { + "type": [ + "string", + "object" + ], + "description": "Responses API reasoning options (forwarded verbatim).", + "default": { + "effort": "low" + } + }, + "previous_response": { + "type": "boolean", + "description": "Chain responses by reusing previous_response_id for field-by-field calls.", + "default": false + }, + "summary": { + "type": "boolean", + "description": "Request summary text to be merged into the output.", + "default": false + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "api_key", + "output" + ] + }, + "huggingface": { + "type": "object", + "description": "Use a model from huggingface.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "api_token": { + "type": "string", + "description": "Huggingface API Token." + }, + "model": { + "type": "string", + "description": "Name of the model to use. e.g. facebook/bart-large-cnn." + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name of the output column. If not provided, will overwrite the input column.", + "default": null + }, + "parameters": { + "type": [ + "object", + "null" + ], + "description": "Optionally, provide additional parameters to define the model behaviour.", + "default": null + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "api_token", + "model" + ] + }, + "log": { + "type": "object", + "description": "Log the current status of the dataframe.", + "additionalProperties": false, + "properties": { + "columns": { + "type": [ + "array", + "null" + ], + "description": "(Optional, default all columns) List of specific columns to log.", + "default": null + }, + "write": { + "type": [ + "array", + "null" + ], + "minItems": 1, + "items": { + "$ref": "#/$defs/write/items" + }, + "description": "(Optional) Allows for an intermediate output to a file/dataframe/database etc.", + "default": null + }, + "warning": { + "type": [ + "string", + "null" + ], + "description": "Log a warning to the console.", + "default": null + }, + "info": { + "type": [ + "string", + "null" + ], + "description": "Log info to the console.", + "default": null + }, + "log_data": { + "type": [ + "boolean", + "null" + ], + "description": "Whether to log a sample of the contents of the dataframe. Default True if not logging to a write, error, warning or info. Default False otherwise.", + "default": null + }, + "error": { + "type": "string", + "description": "Log an error to the console." + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + } + }, + "lookup": { + "type": "object", + "description": "Lookup values from a saved lookup wrangle.", + "additionalProperties": false, + "properties": { + "input": { + "type": "string", + "description": "Name of the column(s) to lookup." + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name of the output column(s). When n is provided and the output list length equals n, each output column receives the corresponding match. A single output containing a wildcard (*) is expanded into n columns, e.g. \"Top *\" with n: 3 becomes \"Top 1\", \"Top 2\", \"Top 3\".", + "default": null + }, + "model_id": { + "type": [ + "string", + "null" + ], + "description": "The model_id to use lookup against.", + "default": null + }, + "lookup_mode": { + "type": "string", + "enum": [ + "by_row", + "by_matrix", + "by_dataframe" + ], + "description": "How to perform lookups. 'by_row' (default): lookup each row individually. 'by_dataframe': lookup unique values once, copy results to all rows. 'by_matrix': lookup once per matrix permutation.", + "default": "by_row" + }, + "n": { + "type": [ + "integer", + "null" + ], + "description": "Number of matches to return per input value. When the output list length equals n, each output column receives the corresponding match. Otherwise all n matches are stored as a list in each output column.", + "default": null + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input" + ] + }, + "math": { + "type": "object", + "description": "Apply a mathematical calculation.", + "additionalProperties": false, + "properties": { + "input": { + "type": "string", + "description": "The mathematical expression using column names. e.g. column1 * column2 + column3. Note: spaces within column names are replaced by underscores (_)." + }, + "output": { + "type": "string", + "description": "The column to output the results to." + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "output" + ] + }, + "maths": { + "type": "object", + "description": "Deprecated alias for `math`; evaluate an expression and write its result to an output column.", + "additionalProperties": false, + "properties": { + "input": { + "type": "string", + "description": "Name, index, or list of input columns." + }, + "output": { + "type": "string", + "description": "Name or list of output columns." + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "output" + ] + }, + "matrix": { + "type": "object", + "description": "Apply a matrix of wrangles to the dataframe. This will run the wrangles for each combination of the variables.", + "additionalProperties": false, + "properties": { + "variables": { + "type": "object", + "description": "A dictionary of variables to pass to the wrangle. The key is the variable name and the value is a list of values." + }, + "wrangles": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/$defs/wrangles/items" + }, + "description": "The wrangles to apply to the dataframe. Each wrangle will be run for each combination of the variables." + }, + "strategy": { + "type": "string", + "enum": [ + "permutations", + "loop" + ], + "description": "Determines how to combine variables when there are multiple. loop (default) iterates over each set of variables, repeating shorter lists until the longest is completed. permutations uses the combination of all variables against all other variables.", + "default": "loop" + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "variables", + "wrangles" + ] + }, + "merge.coalesce": { + "type": "object", + "description": "Take the first non-empty value from a series of columns or lists.", + "additionalProperties": false, + "properties": { + "input": { + "type": "array", + "description": "List of input columns or a single column containing lists." + }, + "output": { + "type": [ + "string", + "null" + ], + "description": "Name of the output columns. This is required if multiple input columns are provided.", + "default": null + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input" + ] + }, + "merge.concatenate": { + "type": "object", + "description": "Concatenate a list of columns or a list within a single column.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Either a single column name or list of columns." + }, + "output": { + "type": "string", + "description": "Name of the output column." + }, + "char": { + "type": "string", + "description": "(Optional) Character to add between successive values.", + "default": "," + }, + "skip_empty": { + "type": "boolean", + "desription": "Whether to skip empty values", + "description": "Whether to skip empty values, defaults to false.", + "default": false + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "output" + ] + }, + "merge.dictionaries": { + "type": "object", + "description": "Take dictionaries in multiple columns and merge them to a single dictionary.", + "additionalProperties": false, + "properties": { + "input": { + "type": "array", + "description": "List of input columns." + }, + "output": { + "type": "string", + "description": "Name of the output column." + }, + "skip_empty": { + "type": "boolean", + "description": "Whether to skip empty dictionaries when merging.", + "default": false + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "output" + ] + }, + "merge.key_value_pairs": { + "type": "object", + "description": "Create a dictionary from keys and values in paired columns e.g. COLUMN_NAME_1, COLUMN_VALUE_1, COLUMN_NAME_2, COLUMN_VALUE_2 ...", + "additionalProperties": false, + "properties": { + "input": { + "type": "object", + "description": "Matched pairs of key and value columns." + }, + "output": { + "type": "string", + "description": "Name of the output column." + }, + "skip_empty": { + "type": "boolean", + "description": "Whether to skip empty keys or values when creating the dictionary.", + "default": false + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "output" + ] + }, + "merge.lists": { + "type": "object", + "description": "Take lists in multiple columns and merge them to a single list.", + "additionalProperties": false, + "properties": { + "input": { + "type": "array", + "description": "List of input columns." + }, + "output": { + "type": "string", + "description": "Name of the output column." + }, + "remove_duplicates": { + "type": "boolean", + "description": "Whether to remove duplicates from the created list.", + "default": false + }, + "ignore_case": { + "type": "boolean", + "description": "Ignore case when removing duplicates.", + "default": false + }, + "include_empty": { + "type": "boolean", + "description": "Whether to include empty values in the created list.", + "default": true + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "output" + ] + }, + "merge.to_dict": { + "type": "object", + "description": "Take multiple columns and merge them to a dictionary (aka object) using the column headers as keys.", + "additionalProperties": false, + "properties": { + "input": { + "type": "array", + "description": "List of input columns." + }, + "output": { + "type": "string", + "description": "Name of the output column." + }, + "include_empty": { + "type": "boolean", + "description": "Whether to include empty columns in the created dictionary.", + "default": false + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "output" + ] + }, + "merge.to_list": { + "type": "object", + "description": "Take multiple columns and merge them to a list.", + "additionalProperties": false, + "properties": { + "input": { + "type": "array", + "description": "List of input columns." + }, + "output": { + "type": "string", + "description": "Name of the output column." + }, + "include_empty": { + "type": "boolean", + "description": "Whether to include empty columns in the created list.", + "default": false + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "output" + ] + }, + "python": { + "type": "object", + "description": "Apply a simple single-line python command. For more complex python use a custom function. Note, this evaluates the python command - be especially cautious including variables from untrusted sources within the command string. The python command will be evaluated once for each row and the result returned. Reference column values by using their name. Non-alphanumeric characters within column names are replaced by underscores (_) Additionally, all columns are available as a dict named kwargs. Additional parameters set for the wrangle will also be available to the command.", + "additionalProperties": false, + "properties": { + "command": { + "type": "string", + "description": "Python command. This must return a value. Note: any non-alphanumeric characters in variable names are replaced by underscores (_)." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name or list of output column(s). To output multiple columns, return a list of the corresponding length." + }, + "input": { + "type": [ + "string", + "integer", + "array", + "null" + ], + "description": "Name or list of input column(s) to filter the data available to the command. Useful in conjunction with kwargs to target a variable range of columns. If not specified, all columns will be available.", + "default": null + }, + "except": { + "type": [ + "string", + "array", + "number", + "integer", + "boolean", + "object" + ], + "description": "Value to return for the row if an exception occurs during the evaluation. If not provided, an exception will be raised as normal. If multiple output columns are specified, this must match the length." + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "command", + "output" + ] + }, + "recipe": { + "type": "object", + "description": "Run another recipe as a wrangle against the current dataframe.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array", + "null" + ], + "description": "Name, index, or list of input columns.", + "default": null + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name or list of output columns.", + "default": null + }, + "name": { + "type": [ + "string", + "null" + ], + "description": "File name of the recipe.", + "default": null + }, + "variables": { + "type": [ + "object", + "null" + ], + "description": "A dictionary of variables to pass to the recipe.", + "default": null + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + } + }, + "reindex": { + "type": "object", + "description": "Changes the row labels and column labels of a DataFrame.", + "additionalProperties": false, + "properties": { + "labels": { + "type": [ + "array", + "null" + ], + "description": "New labels / index to conform the axis specified by ‘axis’ to.", + "default": null + }, + "index": { + "type": [ + "array", + "null" + ], + "description": "New labels for the index. Preferably an Index object to avoid duplicating data.", + "default": null + }, + "columns": { + "type": [ + "array", + "null" + ], + "description": "New labels for the columns. Preferably an Index object to avoid duplicating data.", + "default": null + }, + "axis": { + "type": [ + "string", + "integer", + "null" + ], + "description": "Axis to target. Can be either the axis name (‘index’, ‘columns’) or number (0, 1).", + "default": null + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + } + } + }, + "remove_words": { + "type": "object", + "description": "Remove all the elements that occur in one list from another.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of column to remove words from." + }, + "to_remove": { + "type": "string", + "description": "Column or list of columns with a list of words to be removed." + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name of the output columns.", + "default": null + }, + "tokenize_to_remove": { + "type": "boolean", + "description": "Tokenize all to_remove inputs.", + "default": false + }, + "ignore_case": { + "type": "boolean", + "description": "Ignore input and to_remove case.", + "default": true + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "to_remove" + ] + }, + "rename": { + "type": "object", + "description": "Rename a column or list of columns.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array", + "null" + ], + "description": "Name or list of input columns.", + "default": null + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name or list of output columns.", + "default": null + }, + "wrangles": { + "type": [ + "array", + "null" + ], + "minItems": 1, + "items": { + "$ref": "#/$defs/wrangles/items" + }, + "description": "Use wrangles to transform the column names. The input is named 'columns' and the final result must also include the column named 'columns'. This can only be used instead of the standard rename.", + "default": null + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + } + } + }, + "replace": { + "type": "object", + "description": "Quick find and replace for simple values. Can use regex if 'input' in params and isinstance(params['input'], list):in the find field.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input column." + }, + "find": { + "type": "string", + "description": "Pattern to find using regex." + }, + "replace": { + "type": "string", + "description": "Value to replace the pattern found." + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name or list of output column.", + "default": null + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "find", + "replace" + ] + }, + "round": { + "type": "object", + "description": "Round column(s) to the specified decimals.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column(s)." + }, + "decimals": { + "type": "integer", + "description": "Number of decimal places to round column.", + "default": 0 + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name of the output column(s).", + "default": null + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input" + ] + }, + "search.find_links": { + "type": "object", + "description": "Perform web searches to find links. Returns structured search results with titles, links, snippets, and optional pricing.", + "additionalProperties": false, + "properties": { + "queries": { + "type": [ + "string", + "array" + ], + "description": "Name or list of input columns containing search queries." + }, + "id": { + "type": "string", + "description": "Name of the column containing the row ID to append to each search result." + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Output column for the dictionaries. If a list of 2 is provided, outputs [dicts_column, pretty_strings_column].", + "default": null + }, + "client": { + "type": "string", + "enum": [ + "serpapi" + ], + "description": "The search provider to use.", + "default": "serpapi" + }, + "api_key": { + "type": [ + "string", + "null" + ], + "description": "API key for the search client. Can also be set as an environment variable (e.g., SERPAPI_API_KEY).", + "default": null + }, + "n_results": { + "type": "integer", + "description": "Number of search results to return per query (default 10, max 100).", + "default": 10 + }, + "threads": { + "type": "integer", + "description": "Number of concurrent threads for parallel processing (default 10).", + "default": 10 + }, + "country": { + "type": "string", + "description": "Country code for search results (default 'us'). Alias: gl." + }, + "language": { + "type": "string", + "description": "Language code for search results (default 'en'). Alias: hl." + }, + "location": { + "type": "string", + "description": "Location for search results (e.g., 'Austin, Texas')." + }, + "device": { + "type": "string", + "enum": [ + "desktop", + "mobile", + "tablet" + ], + "description": "Device type for search results." + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "queries", + "id" + ] + }, + "search.retrieve_link_content": { + "type": "object", + "description": "Retrieves targeted content from web pages using LLM URL extraction. Can optionally output a second column containing a clean, human-readable text summary of the retrieved data.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "array" + ], + "description": "Name or list of input columns containing URLs or Scored Search Result dictionaries." + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name of the output column for the raw dictionaries. To output BOTH the raw dictionaries and the formatted text, provide a list of exactly two column names (e.g., [page_data, page_text]).", + "default": null + }, + "client": { + "type": "string", + "enum": [ + "google_url_context" + ], + "description": "The retrieval provider to use.", + "default": "google_url_context" + }, + "api_key": { + "type": [ + "string", + "null" + ], + "description": "API key for the provider. Can also be set as an environment variable (e.g., GOOGLE_API_KEY).", + "default": null + }, + "prompt": { + "type": [ + "string", + "null" + ], + "description": "Optional custom system prompt to guide the extraction behavior and output format.", + "default": null + }, + "model_id": { + "type": "string", + "description": "The specific model ID to use (default models/gemini-3-flash-preview).", + "default": "models/gemini-3-flash-preview" + }, + "output_format": { + "type": "string", + "enum": [ + "markdown", + "json" + ], + "description": "The desired format for the extracted content.", + "default": "json" + }, + "threads": { + "type": "integer", + "description": "Number of concurrent threads for parallel processing (default 10).", + "default": 10 + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input" + ] + }, + "select.columns": { + "type": "object", + "description": "Select columns from the dataframe.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the column(s) to select." + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input" + ] + }, + "select.dictionary_element": { + "type": "object", + "description": "Select one or more element of a dictionary.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "element": { + "type": "string", + "description": "The key or keys from the dictionary to select. If a single key is provided, the value will be returned If a lists of keys are selected, the result will be a new dictionary." + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name of the output column. If omitted, the input column will be replaced.", + "default": null + }, + "default": { + "type": [ + "string", + "number", + "array", + "object", + "boolean", + "null" + ], + "description": "Set the default value to return if the specified element doesn't exist. If selecting multiple elements, a dict of defaults can be set.", + "default": "" + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "element" + ] + }, + "select.element": { + "type": "object", + "description": "Select elements of lists or dicts using python syntax like col[0]['key'].", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column and sub elements This permits by index for lists or dict and by key for dicts e.g. col[0]['key'] // [{\"key\":\"val\"}] -> \"val\"." + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name of the output column(s).", + "default": null + }, + "default": { + "type": [ + "string", + "number", + "array", + "object", + "boolean", + "null" + ], + "description": "Set the default value to return if the specified element doesn't exist.", + "default": null + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input" + ] + }, + "select.group_by": { + "type": "object", + "description": "Group and aggregate the data.", + "additionalProperties": false, + "properties": { + "by": { + "type": [ + "string", + "array" + ], + "description": "List of the input columns to group on.", + "default": [] + }, + "auto_rename_columns": { + "type": "boolean", + "description": "If true (default), aggregated column names include the operation as a suffix (e.g. Value.sum). If false, column names are left as-is; use a dictionary entry to supply a custom output name (e.g. - Value: Total).", + "default": true + }, + "list": { + "type": [ + "string", + "array" + ], + "description": "Group and return all values for these column(s) as a list." + }, + "first": { + "type": [ + "string", + "array" + ], + "description": "The first value for these column(s)." + }, + "last": { + "type": [ + "string", + "array" + ], + "description": "The last value for these column(s)." + }, + "min": { + "type": [ + "string", + "array" + ], + "description": "The minimum value for these column(s)." + }, + "max": { + "type": [ + "string", + "array" + ], + "description": "The maximum value for these column(s)." + }, + "mean": { + "type": [ + "string", + "array" + ], + "description": "The mean (average) value for these column(s)." + }, + "median": { + "type": [ + "string", + "array" + ], + "description": "The median value for these column(s)." + }, + "nunique": { + "type": [ + "string", + "array" + ], + "description": "The count of unique values for these column(s)." + }, + "count": { + "type": [ + "string", + "array" + ], + "description": "The count of values for these column(s)." + }, + "counts": { + "type": [ + "string", + "array" + ], + "description": "Return a dictionary containing the count of each distinct value for these column(s). Keys are converted to JSON-safe strings; missing values use the key \"null\" and booleans use lowercase \"true\"/\"false\"." + }, + "std": { + "type": [ + "string", + "array" + ], + "description": "The standard deviation of values for these column(s)." + }, + "sum": { + "type": [ + "string", + "array" + ], + "description": "The total of values for these column(s)." + }, + "any": { + "type": [ + "string", + "array" + ], + "description": "Return true if any of the values for these column(s) are true." + }, + "all": { + "type": [ + "string", + "array" + ], + "description": "Return true if all of the values for these column(s) are true." + }, + "p75": { + "type": [ + "string", + "array" + ], + "description": "Get a percentile. Note, you can use any integer here for the corresponding percentile." + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "patternProperties": { + "^custom\\.[A-Za-z_][A-Za-z0-9_]*$": { + "type": [ + "string", + "array" + ], + "description": "Placeholder for custom functions. Replace 'placeholder' with the name of the function." + } + } + }, + "select.head": { + "type": "object", + "description": "Return the first n rows.", + "additionalProperties": false, + "properties": { + "n": { + "type": "integer", + "description": "Number of rows to return." + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "n" + ] + }, + "select.highest_confidence": { + "type": "object", + "description": "Select the option with the highest confidence from multiple columns. Inputs are expected to be of the form [<>, <>].", + "additionalProperties": false, + "properties": { + "input": { + "type": "array", + "description": "List of the input columns to select from." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "If two columns; the result and confidence. If one column; [result, confidence]." + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "output" + ] + }, + "select.left": { + "type": "object", + "description": "Return characters from the left of text. Strings shorter than the length defined will be unaffected.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the column(s) to edit." + }, + "length": { + "type": "integer", + "description": "Number of characters to include from the left. If negative, this will remove the specified number of characters from the left. May not equal 0." + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name of the output column(s).", + "default": null + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "length" + ] + }, + "select.length": { + "type": "object", + "description": "Calculate the lengths of data in a column. The length depends on the data type e.g. text will be the length of the text, lists will be the number of elements in the list.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column(s)." + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name of the output column(s).", + "default": null + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input" + ] + }, + "select.list_element": { + "type": "object", + "description": "Select a numbered element of a list (zero indexed).", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the input column." + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name of the output column.", + "default": null + }, + "element": { + "type": "integer", + "description": "The numbered element of the list to select. Starts from zero. This may use python slicing syntax to select a subset of the list.", + "default": 0 + }, + "default": { + "type": [ + "string", + "number", + "array", + "object", + "boolean", + "null" + ], + "description": "Set the default value to return if the specified element doesn't exist.", + "default": "" + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input" + ] + }, + "select.right": { + "type": "object", + "description": "Return characters from the right of text. Strings shorter than the length defined will be unaffected.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the column(s) to edit." + }, + "length": { + "type": "integer", + "description": "Number of characters to include from the right. If negative, this will remove the specified number of characters from the right. May not equal 0." + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name of the output column(s).", + "default": null + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "length" + ] + }, + "select.sample": { + "type": "object", + "description": "Return a random sample of the rows.", + "additionalProperties": false, + "properties": { + "rows": { + "type": [ + "integer", + "number" + ], + "exclusiveMinimum": 0, + "description": "If a whole number, will select that number of rows. If a decimal between 0 and 1 will select that fraction of the rows e.g. 0.1 => 10% of rows will be returned." + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "rows" + ] + }, + "select.substring": { + "type": "object", + "description": "Return characters from the middle of text.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the column(s) to edit." + }, + "start": { + "type": [ + "integer", + "null" + ], + "minimum": 1, + "description": "The position of the first character to select. If ommited will start from the beginning and length must be provided.", + "default": null + }, + "length": { + "type": [ + "integer", + "null" + ], + "minimum": 1, + "description": "The length of the string to select. If ommited will select to the end of the string and start must be provided.", + "default": null + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name of the output column(s).", + "default": null + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input" + ] + }, + "select.tail": { + "type": "object", + "description": "Return the last n rows.", + "additionalProperties": false, + "properties": { + "n": { + "type": "integer", + "description": "Number of rows to return." + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "n" + ] + }, + "select.threshold": { + "type": "object", + "description": "Select the first option if it exceeds a given threshold, else the second option.", + "additionalProperties": false, + "properties": { + "input": { + "type": "array", + "description": "List of the input columns to select from." + }, + "output": { + "type": "string", + "description": "Name of the output column." + }, + "threshold": { + "type": "number", + "minimum": 0, + "maximum": 1, + "description": "Threshold above which to choose the first option, otherwise the second." + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "output", + "threshold" + ] + }, + "similarity": { + "type": "object", + "description": "Calculate the cosine similarity of two vectors.", + "additionalProperties": false, + "properties": { + "input": { + "type": "array", + "minItems": 2, + "maxItems": 2, + "description": "Two columns of vectors to compare the similarity of." + }, + "output": { + "type": "string", + "description": "Name of the output column." + }, + "method": { + "type": "string", + "enum": [ + "cosine", + "adjusted cosine", + "euclidean" + ], + "description": "The type of similarity to calculate (cosine or euclidean). Adjusted cosine adjusts the default cosine calculation to cover a range of 0-1 for typical comparisons.", + "default": "cosine" + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "output" + ] + }, + "sort": { + "type": "object", + "description": "Sort the data.", + "additionalProperties": false, + "properties": { + "ignore_index": { + "type": "boolean", + "description": "Ignore Index value accepted by the runtime.", + "default": true + }, + "by": { + "type": [ + "string", + "array" + ], + "description": "Name or list of the column(s) to sort by." + }, + "ascending": { + "type": [ + "boolean", + "array" + ], + "items": { + "type": "boolean" + }, + "description": "Sort ascending vs. descending. Specify a list to sort multiple columns in different orders. If this is a list of bools then it must match the length of the by." + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "by" + ] + }, + "split.dictionary": { + "type": "object", + "description": "Split one or more dictionaries into columns. The dictionary keys will be returned as the new column headers. If the dictionaries contain overlapping values, the last value will be returned.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or lists of the column(s) containing dictionaries to be split. If providing multiple dictionaries and the dictionaries contain overlapping values, the last value will be returned." + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "In columns output_format, this is an optional subset of keys to extract from the dictionary. If not provided, all keys will be returned. Columns can be renamed with the following syntax: output: - key1: new_column_name1 - key2: new_column_name2 In to_lists output_format, this must be two output columns for the keys and values lists. If not provided, Keys and Values will be used.", + "default": null + }, + "default": { + "type": [ + "object", + "null" + ], + "description": "Provide a set of default headings and values if they are not found within the input.", + "default": null + }, + "output_format": { + "type": "string", + "enum": [ + "columns", + "to_lists" + ], + "description": "How to split the dictionary. columns creates one output column for each dictionary key. to_lists creates two output columns containing lists of keys and values.", + "default": "columns" + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input" + ] + }, + "split.list": { + "type": "object", + "description": "Split a list in a single column to multiple columns.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer" + ], + "description": "Name of the column to be split." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of column(s) for the results. If providing a single column, use a wildcard (*) to indicate a incrementing integer." + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "output" + ] + }, + "split.text": { + "type": "object", + "description": "Split a string to multiple columns or a list.", + "additionalProperties": false, + "properties": { + "input": { + "type": "string", + "description": "Name of the column to be split." + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name of the output column(s) If a single column is provided, the results will be returned as a list If multiple columns are listed, the results will be separated into the columns. If omitted, will overwrite the input.", + "default": null + }, + "char": { + "type": "string", + "description": "Set the character(s) to split on. Default comma (,) Can also prefix with \"regex:\" to split on a pattern.", + "default": "," + }, + "pad": { + "type": [ + "boolean", + "null" + ], + "description": "Choose whether to pad to ensure a consistent length. Default true if outputting to columns, false for lists.", + "default": null + }, + "element": { + "type": [ + "string", + "integer", + "null" + ], + "description": "Select a specific element or range after splitting using slicing syntax. e.g. 0, \":5\", \"5:\", \"2:8:2\".", + "default": null + }, + "inclusive": { + "type": "boolean", + "description": "If true, include the split character in the output. Default False.", + "default": false + }, + "skip_empty": { + "type": "boolean", + "description": "Whether to skip empty values.", + "default": false + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input" + ] + }, + "split.tokenize": { + "type": "object", + "description": "Split text into tokens. A variety of methods are available. The default method is to split on spaces.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Column(s) to be split into tokens." + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name of the output column.", + "default": null + }, + "method": { + "anyOf": [ + { + "type": "string", + "enum": [ + "space", + "boundary", + "boundary_ignore_space" + ] + }, + { + "type": "string" + } + ], + "description": "Method to split the list. Options include `space`, `boundary`, `boundary_ignore_space`, custom functions as `custom.`, or regex patterns as `regex:`.", + "default": "space" + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input" + ] + }, + "sql": { + "type": "object", + "description": "Apply a SQL command to the current dataframe. Only SELECT statements are supported - the result will be the output.", + "additionalProperties": false, + "properties": { + "command": { + "type": "string", + "description": "SQL Command. The table is called df. For specific SQL syntax, this uses the SQLite dialect." + }, + "params": { + "type": [ + "array", + "object", + "null" + ], + "description": "Variables to use in conjunctions with query. This allows the query to be parameterized. This uses sqlite syntax (? or :name).", + "default": null + }, + "preserve_index": { + "type": "boolean", + "description": "Preserve Index value accepted by the runtime.", + "default": false + }, + "preserve_data_types": { + "type": "boolean", + "description": "Preserve Data Types value accepted by the runtime.", + "default": true + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "command" + ] + }, + "standardize": { + "type": "object", + "description": "Standardize data using a DIY or bespoke standardization wrangle. Requires WrangleWorks Account and Subscription.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input columns." + }, + "model_id": { + "type": [ + "string", + "array" + ], + "description": "The ID of the wrangle to use (do not include 'find' and 'replace')." + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name or list of output columns.", + "default": null + }, + "case_sensitive": { + "type": "boolean", + "description": "Allows the wrangle to be case sensitive if set to True, default is False.", + "default": false + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "model_id" + ] + }, + "standardize.clean": { + "type": "object", + "description": "Repair common encoding, Unicode, HTML character reference, control character, and whitespace problems locally.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input columns." + }, + "output": { + "type": [ + "string", + "integer", + "array", + "null" + ], + "description": "Name or list of output columns. Defaults to overwriting input.", + "default": null + }, + "fix_encoding": { + "type": "boolean", + "description": "Repair mojibake and other reversible encoding errors.", + "default": true + }, + "unescape_html": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "string", + "enum": [ + "auto" + ] + } + ], + "description": "Decode HTML character references. Auto avoids decoding text that appears to contain HTML markup.", + "default": "auto" + }, + "normalization": { + "type": "string", + "enum": [ + "NFC", + "NFKC", + "NFD", + "NFKD", + null + ], + "description": "Unicode normalization form.", + "default": "NFC" + }, + "fix_character_width": { + "type": "boolean", + "description": "Normalize fullwidth and halfwidth characters.", + "default": true + }, + "uncurl_quotes": { + "type": "boolean", + "description": "Replace typographic quotes with straight quotes.", + "default": true + }, + "remove_control_chars": { + "type": "boolean", + "description": "Remove C0 and C1 control characters.", + "default": true + }, + "collapse_whitespace": { + "type": "boolean", + "description": "Collapse runs of Unicode whitespace.", + "default": true + }, + "preserve_line_breaks": { + "type": "boolean", + "description": "Preserve line breaks while collapsing other whitespace.", + "default": false + }, + "trim": { + "type": "boolean", + "description": "Remove leading and trailing whitespace.", + "default": true + }, + "separator": { + "type": "string", + "description": "Text used to join multiple input columns into one output.", + "default": " " + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input" + ] + }, + "standardize.custom": { + "type": "object", + "description": "Standardize data using a DIY or bespoke standardization wrangle. Requires WrangleWorks Account and Subscription.", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name or list of input columns." + }, + "model_id": { + "type": [ + "string", + "array" + ], + "description": "The ID of the wrangle to use (do not include 'find' and 'replace')." + }, + "output": { + "type": [ + "string", + "array", + "null" + ], + "description": "Name or list of output columns.", + "default": null + }, + "case_sensitive": { + "type": "boolean", + "description": "Allows the wrangle to be case sensitive if set to True, default is False.", + "default": false + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "model_id" + ] + }, + "translate": { + "type": "object", + "description": "Translate the input to a different language. Requires WrangleWorks Account and DeepL API Key (A free account for up to 500,000 characters per month is available).", + "additionalProperties": false, + "properties": { + "input": { + "type": [ + "string", + "integer", + "array" + ], + "description": "Name of the column to translate." + }, + "output": { + "type": [ + "string", + "array" + ], + "description": "Name of the output column." + }, + "target_language": { + "type": "string", + "enum": [ + "Bulgarian", + "Chinese", + "Czech", + "Danish", + "Dutch", + "English (American)", + "English (British)", + "Estonian", + "Finnish", + "French", + "German", + "Greek", + "Hungarian", + "Italian", + "Japanese", + "Latvian", + "Lithuanian", + "Polish", + "Portuguese", + "Portuguese (Brazilian)", + "Romanian", + "Russian", + "Slovak", + "Slovenian", + "Spanish", + "Swedish" + ], + "description": "Code of the language to translate to." + }, + "source_language": { + "type": "string", + "enum": [ + "Auto", + "Bulgarian", + "Chinese", + "Czech", + "Danish", + "Dutch", + "English", + "Estonian", + "Finnish", + "French", + "German", + "Greek", + "Hungarian", + "Italian", + "Japanese", + "Latvian", + "Lithuanian", + "Polish", + "Portuguese", + "Romanian", + "Russian", + "Slovak", + "Slovenian", + "Spanish", + "Swedish" + ], + "description": "Code of the language to translate from. If omitted, automatically detects the input language." + }, + "case": { + "type": [ + "string", + "null" + ], + "description": "Allow changing the case of the input prior to translation.", + "default": null + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "input", + "output", + "target_language" + ] + }, + "transpose": { + "type": "object", + "description": "Transpose the DataFrame (swap columns to rows).", + "additionalProperties": false, + "properties": { + "header_column": { + "type": [ + "string", + "integer", + "null" + ], + "description": "Name or position of the column that will be used as the column headings for the transposed DataFrame. Default 0 (first column). Use header_column = null to not use any column as header.", + "default": 0 + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + } + }, + "try": { + "type": "object", + "description": "Try a list of wrangles and catch any errors that occur.", + "additionalProperties": false, + "properties": { + "wrangles": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/$defs/wrangles/items" + }, + "description": "List of wrangles to apply." + }, + "retries": { + "type": "integer", + "minimum": 0, + "description": "Number of times to retry the wrangles if an error occurs. Default 0.", + "default": 0 + }, + "except": { + "type": "object", + "minItems": 1, + "items": { + "$ref": "#/$defs/wrangles/items" + }, + "description": "An action to take if the wrangles encounter an error. This can contain a list of wrangles or a dictionary of column names and values. If except is not provided, the error will be logged and the recipe will continue." + }, + "if": { + "type": "string", + "description": "Condition that determines whether the wrangle runs as a whole. Recipe variables may be referenced with `${variable}`." + }, + "where": { + "type": "string", + "description": "Filter rows before applying the wrangle using SQL-like criteria, such as `column1 = 123 OR column2 = 'abc'`." + }, + "where_params": { + "type": [ + "array", + "object" + ], + "description": "Values used with `where` for parameterized criteria. Uses SQLite placeholder syntax such as `?` or `:name`." + } + }, + "required": [ + "wrangles" + ] + } + } + } + }, + "write": { + "items": { + "type": "object", + "description": "One write connector step from the wider recipe contract.", + "minProperties": 1, + "maxProperties": 1 + } + } + } +} diff --git a/my-docs-site/static/team_members.gif b/wrangles-docs/static/team_members.gif similarity index 100% rename from my-docs-site/static/team_members.gif rename to wrangles-docs/static/team_members.gif diff --git a/my-docs-site/tsconfig.json b/wrangles-docs/tsconfig.json similarity index 100% rename from my-docs-site/tsconfig.json rename to wrangles-docs/tsconfig.json diff --git a/my-docs-site/utility-pilot/shell/NavigationShell.jsx b/wrangles-docs/utility-pilot/shell/NavigationShell.jsx similarity index 100% rename from my-docs-site/utility-pilot/shell/NavigationShell.jsx rename to wrangles-docs/utility-pilot/shell/NavigationShell.jsx diff --git a/my-docs-site/utility-pilot/shell/styles.module.css b/wrangles-docs/utility-pilot/shell/styles.module.css similarity index 100% rename from my-docs-site/utility-pilot/shell/styles.module.css rename to wrangles-docs/utility-pilot/shell/styles.module.css diff --git a/my-docs-site/utility-pilot/shell/wrangleworks.png b/wrangles-docs/utility-pilot/shell/wrangleworks.png similarity index 100% rename from my-docs-site/utility-pilot/shell/wrangleworks.png rename to wrangles-docs/utility-pilot/shell/wrangleworks.png diff --git a/my-docs-site/utility-pilot/utility.md b/wrangles-docs/utility-pilot/utility.md similarity index 100% rename from my-docs-site/utility-pilot/utility.md rename to wrangles-docs/utility-pilot/utility.md diff --git a/my-docs-site/wrangle-docs/ai/_sources/ai.md b/wrangles-docs/wrangle-docs/ai/_sources/ai.md similarity index 94% rename from my-docs-site/wrangle-docs/ai/_sources/ai.md rename to wrangles-docs/wrangle-docs/ai/_sources/ai.md index c2273e8..bb4ef6d 100644 --- a/my-docs-site/wrangle-docs/ai/_sources/ai.md +++ b/wrangles-docs/wrangle-docs/ai/_sources/ai.md @@ -114,8 +114,8 @@ _Template based on the documented parameters; no published source example is cur | Docs Path | | | Docs URL | | | Legacy Path | | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/ai/_sources/classify.md b/wrangles-docs/wrangle-docs/ai/_sources/classify.md similarity index 93% rename from my-docs-site/wrangle-docs/ai/_sources/classify.md rename to wrangles-docs/wrangle-docs/ai/_sources/classify.md index 0f5f3d3..939f6a9 100644 --- a/my-docs-site/wrangle-docs/ai/_sources/classify.md +++ b/wrangles-docs/wrangle-docs/ai/_sources/classify.md @@ -93,8 +93,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/standalone.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/standalone | | Legacy Path | docs/python/recipes/wrangles/standalone.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/ai/_sources/huggingface.md b/wrangles-docs/wrangle-docs/ai/_sources/huggingface.md similarity index 92% rename from my-docs-site/wrangle-docs/ai/_sources/huggingface.md rename to wrangles-docs/wrangle-docs/ai/_sources/huggingface.md index 6784256..7249492 100644 --- a/my-docs-site/wrangle-docs/ai/_sources/huggingface.md +++ b/wrangles-docs/wrangle-docs/ai/_sources/huggingface.md @@ -96,8 +96,8 @@ _Template based on the documented parameters; no published source example is cur | Docs Path | | | Docs URL | | | Legacy Path | | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/ai/ai.md b/wrangles-docs/wrangle-docs/ai/ai.md similarity index 100% rename from my-docs-site/wrangle-docs/ai/ai.md rename to wrangles-docs/wrangle-docs/ai/ai.md diff --git a/my-docs-site/wrangle-docs/compare/_sources/lists.md b/wrangles-docs/wrangle-docs/compare/_sources/lists.md similarity index 94% rename from my-docs-site/wrangle-docs/compare/_sources/lists.md rename to wrangles-docs/wrangle-docs/compare/_sources/lists.md index 582cb52..ae834f4 100644 --- a/my-docs-site/wrangle-docs/compare/_sources/lists.md +++ b/wrangles-docs/wrangle-docs/compare/_sources/lists.md @@ -177,8 +177,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/compare.md | | Docs URL | /python/recipes/wrangles/compare | | Legacy Path | docs/python/recipes/wrangles/compare.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/compare/_sources/similarity.md b/wrangles-docs/wrangle-docs/compare/_sources/similarity.md similarity index 94% rename from my-docs-site/wrangle-docs/compare/_sources/similarity.md rename to wrangles-docs/wrangle-docs/compare/_sources/similarity.md index e5276a8..e77fb7d 100644 --- a/my-docs-site/wrangle-docs/compare/_sources/similarity.md +++ b/wrangles-docs/wrangle-docs/compare/_sources/similarity.md @@ -110,8 +110,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/standalone.md | | Docs URL | https://wrangles.io/en/python/recipes/wrangles/standalone | | Legacy Path | docs/python/recipes/wrangles/standalone.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/compare/_sources/text.md b/wrangles-docs/wrangle-docs/compare/_sources/text.md similarity index 96% rename from my-docs-site/wrangle-docs/compare/_sources/text.md rename to wrangles-docs/wrangle-docs/compare/_sources/text.md index 7b1b41d..b5d1f5b 100644 --- a/my-docs-site/wrangle-docs/compare/_sources/text.md +++ b/wrangles-docs/wrangle-docs/compare/_sources/text.md @@ -182,8 +182,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/compare.md | | Docs URL | /python/recipes/wrangles/compare | | Legacy Path | docs/python/recipes/wrangles/compare.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/compare/compare.md b/wrangles-docs/wrangle-docs/compare/compare.md similarity index 100% rename from my-docs-site/wrangle-docs/compare/compare.md rename to wrangles-docs/wrangle-docs/compare/compare.md diff --git a/my-docs-site/wrangle-docs/compute/_sources/case-when.md b/wrangles-docs/wrangle-docs/compute/_sources/case-when.md similarity index 95% rename from my-docs-site/wrangle-docs/compute/_sources/case-when.md rename to wrangles-docs/wrangle-docs/compute/_sources/case-when.md index 31c6655..beb627b 100644 --- a/my-docs-site/wrangle-docs/compute/_sources/case-when.md +++ b/wrangles-docs/wrangle-docs/compute/_sources/case-when.md @@ -153,8 +153,8 @@ Each item in `cases` is an object with a condition and value. Conditions are eva | Docs Path | docs/python/recipes/wrangles/compute.md | | Docs URL | /python/recipes/wrangles/compute | | Legacy Path | docs/python/recipes/wrangles/compute.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/compute/_sources/math.md b/wrangles-docs/wrangle-docs/compute/_sources/math.md similarity index 92% rename from my-docs-site/wrangle-docs/compute/_sources/math.md rename to wrangles-docs/wrangle-docs/compute/_sources/math.md index e1b7f42..f04fb57 100644 --- a/my-docs-site/wrangle-docs/compute/_sources/math.md +++ b/wrangles-docs/wrangle-docs/compute/_sources/math.md @@ -97,8 +97,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/standalone.md | | Docs URL | https://wrangles.io/en/python/recipes/wrangles/standalone | | Legacy Path | docs/python/recipes/wrangles/standalone.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/compute/_sources/python.md b/wrangles-docs/wrangle-docs/compute/_sources/python.md similarity index 94% rename from my-docs-site/wrangle-docs/compute/_sources/python.md rename to wrangles-docs/wrangle-docs/compute/_sources/python.md index 22a2840..58ab73d 100644 --- a/my-docs-site/wrangle-docs/compute/_sources/python.md +++ b/wrangles-docs/wrangle-docs/compute/_sources/python.md @@ -125,8 +125,8 @@ _No sample available._ | Docs Path | docs/python/recipes/wrangles/standalone.md | | Docs URL | https://wrangles.io/en/python/recipes/wrangles/standalone | | Legacy Path | docs/python/recipes/wrangles/standalone.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/compute/_sources/score-search-results.md b/wrangles-docs/wrangle-docs/compute/_sources/score-search-results.md similarity index 95% rename from my-docs-site/wrangle-docs/compute/_sources/score-search-results.md rename to wrangles-docs/wrangle-docs/compute/_sources/score-search-results.md index db58369..76ba9fb 100644 --- a/my-docs-site/wrangle-docs/compute/_sources/score-search-results.md +++ b/wrangles-docs/wrangle-docs/compute/_sources/score-search-results.md @@ -120,8 +120,8 @@ _Template based on the documented parameters; no published source example is cur | Docs Path | | | Docs URL | | | Legacy Path | | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/compute/_sources/sql.md b/wrangles-docs/wrangle-docs/compute/_sources/sql.md similarity index 91% rename from my-docs-site/wrangle-docs/compute/_sources/sql.md rename to wrangles-docs/wrangle-docs/compute/_sources/sql.md index d50ff1a..c32c5cc 100644 --- a/my-docs-site/wrangle-docs/compute/_sources/sql.md +++ b/wrangles-docs/wrangle-docs/compute/_sources/sql.md @@ -87,8 +87,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/standalone.md | | Docs URL | https://wrangles.io/en/python/recipes/wrangles/standalone | | Legacy Path | docs/python/recipes/wrangles/standalone.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/compute/compute.md b/wrangles-docs/wrangle-docs/compute/compute.md similarity index 100% rename from my-docs-site/wrangle-docs/compute/compute.md rename to wrangles-docs/wrangle-docs/compute/compute.md diff --git a/my-docs-site/wrangle-docs/convert/_sources/case.md b/wrangles-docs/wrangle-docs/convert/_sources/case.md similarity index 92% rename from my-docs-site/wrangle-docs/convert/_sources/case.md rename to wrangles-docs/wrangle-docs/convert/_sources/case.md index ec45a7f..9b768d8 100644 --- a/my-docs-site/wrangle-docs/convert/_sources/case.md +++ b/wrangles-docs/wrangle-docs/convert/_sources/case.md @@ -97,8 +97,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/convert.md | | Docs URL | /python/recipes/wrangles/convert | | Legacy Path | docs/python/recipes/wrangles/convert.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/convert/_sources/data-type.md b/wrangles-docs/wrangle-docs/convert/_sources/data-type.md similarity index 92% rename from my-docs-site/wrangle-docs/convert/_sources/data-type.md rename to wrangles-docs/wrangle-docs/convert/_sources/data-type.md index 910d0cd..61728a5 100644 --- a/my-docs-site/wrangle-docs/convert/_sources/data-type.md +++ b/wrangles-docs/wrangle-docs/convert/_sources/data-type.md @@ -90,8 +90,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/convert.md | | Docs URL | /python/recipes/wrangles/convert | | Legacy Path | docs/python/recipes/wrangles/convert.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/convert/_sources/fraction-to-decimal.md b/wrangles-docs/wrangle-docs/convert/_sources/fraction-to-decimal.md similarity index 92% rename from my-docs-site/wrangle-docs/convert/_sources/fraction-to-decimal.md rename to wrangles-docs/wrangle-docs/convert/_sources/fraction-to-decimal.md index f344f8d..0f9aa6d 100644 --- a/my-docs-site/wrangle-docs/convert/_sources/fraction-to-decimal.md +++ b/wrangles-docs/wrangle-docs/convert/_sources/fraction-to-decimal.md @@ -90,8 +90,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/convert.md | | Docs URL | /python/recipes/wrangles/convert | | Legacy Path | docs/python/recipes/wrangles/convert.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/convert/_sources/from-json.md b/wrangles-docs/wrangle-docs/convert/_sources/from-json.md similarity index 92% rename from my-docs-site/wrangle-docs/convert/_sources/from-json.md rename to wrangles-docs/wrangle-docs/convert/_sources/from-json.md index d7d86d0..f68c0d5 100644 --- a/my-docs-site/wrangle-docs/convert/_sources/from-json.md +++ b/wrangles-docs/wrangle-docs/convert/_sources/from-json.md @@ -89,8 +89,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/convert.md | | Docs URL | /python/recipes/wrangles/convert | | Legacy Path | docs/python/recipes/wrangles/convert.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/convert/_sources/from-yaml.md b/wrangles-docs/wrangle-docs/convert/_sources/from-yaml.md similarity index 91% rename from my-docs-site/wrangle-docs/convert/_sources/from-yaml.md rename to wrangles-docs/wrangle-docs/convert/_sources/from-yaml.md index b16ab1f..2798d7c 100644 --- a/my-docs-site/wrangle-docs/convert/_sources/from-yaml.md +++ b/wrangles-docs/wrangle-docs/convert/_sources/from-yaml.md @@ -93,8 +93,8 @@ Product Specs: | Docs Path | docs/python/recipes/wrangles/convert.md | | Docs URL | /python/recipes/wrangles/convert | | Legacy Path | docs/python/recipes/wrangles/convert.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/convert/_sources/to-json.md b/wrangles-docs/wrangle-docs/convert/_sources/to-json.md similarity index 93% rename from my-docs-site/wrangle-docs/convert/_sources/to-json.md rename to wrangles-docs/wrangle-docs/convert/_sources/to-json.md index 38a0582..457d3a1 100644 --- a/my-docs-site/wrangle-docs/convert/_sources/to-json.md +++ b/wrangles-docs/wrangle-docs/convert/_sources/to-json.md @@ -93,8 +93,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/convert.md | | Docs URL | /python/recipes/wrangles/convert | | Legacy Path | docs/python/recipes/wrangles/convert.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/convert/_sources/to-yaml.md b/wrangles-docs/wrangle-docs/convert/_sources/to-yaml.md similarity index 92% rename from my-docs-site/wrangle-docs/convert/_sources/to-yaml.md rename to wrangles-docs/wrangle-docs/convert/_sources/to-yaml.md index 24cf2cf..c298982 100644 --- a/my-docs-site/wrangle-docs/convert/_sources/to-yaml.md +++ b/wrangles-docs/wrangle-docs/convert/_sources/to-yaml.md @@ -98,8 +98,8 @@ Product Specs: | Docs Path | docs/python/recipes/wrangles/convert.md | | Docs URL | /python/recipes/wrangles/convert | | Legacy Path | docs/python/recipes/wrangles/convert.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/convert/convert.md b/wrangles-docs/wrangle-docs/convert/convert.md similarity index 100% rename from my-docs-site/wrangle-docs/convert/convert.md rename to wrangles-docs/wrangle-docs/convert/convert.md diff --git a/my-docs-site/wrangle-docs/create/_sources/bins.md b/wrangles-docs/wrangle-docs/create/_sources/bins.md similarity index 94% rename from my-docs-site/wrangle-docs/create/_sources/bins.md rename to wrangles-docs/wrangle-docs/create/_sources/bins.md index 3224517..0bf1757 100644 --- a/my-docs-site/wrangle-docs/create/_sources/bins.md +++ b/wrangles-docs/wrangle-docs/create/_sources/bins.md @@ -151,8 +151,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/create.md | | Docs URL | /python/recipes/wrangles/create | | Legacy Path | docs/python/recipes/wrangles/create.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/create/_sources/column.md b/wrangles-docs/wrangle-docs/create/_sources/column.md similarity index 94% rename from my-docs-site/wrangle-docs/create/_sources/column.md rename to wrangles-docs/wrangle-docs/create/_sources/column.md index b98b07c..aa2a434 100644 --- a/my-docs-site/wrangle-docs/create/_sources/column.md +++ b/wrangles-docs/wrangle-docs/create/_sources/column.md @@ -172,8 +172,8 @@ Columns of empty lists can also be created by passing an empty list (`[]`) as th | Docs Path | docs/python/recipes/wrangles/create.md | | Docs URL | /python/recipes/wrangles/create | | Legacy Path | docs/python/recipes/wrangles/create.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/create/_sources/embeddings.md b/wrangles-docs/wrangle-docs/create/_sources/embeddings.md similarity index 94% rename from my-docs-site/wrangle-docs/create/_sources/embeddings.md rename to wrangles-docs/wrangle-docs/create/_sources/embeddings.md index 4239273..e1cfa4a 100644 --- a/my-docs-site/wrangle-docs/create/_sources/embeddings.md +++ b/wrangles-docs/wrangle-docs/create/_sources/embeddings.md @@ -102,8 +102,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/create.md | | Docs URL | /python/recipes/wrangles/create | | Legacy Path | docs/python/recipes/wrangles/create.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/create/_sources/guid.md b/wrangles-docs/wrangle-docs/create/_sources/guid.md similarity index 91% rename from my-docs-site/wrangle-docs/create/_sources/guid.md rename to wrangles-docs/wrangle-docs/create/_sources/guid.md index b8aedfd..f61b550 100644 --- a/my-docs-site/wrangle-docs/create/_sources/guid.md +++ b/wrangles-docs/wrangle-docs/create/_sources/guid.md @@ -83,8 +83,8 @@ _No sample available._ | Docs Path | docs/python/recipes/wrangles/create.md | | Docs URL | /python/recipes/wrangles/create | | Legacy Path | docs/python/recipes/wrangles/create.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/create/_sources/hash.md b/wrangles-docs/wrangle-docs/create/_sources/hash.md similarity index 92% rename from my-docs-site/wrangle-docs/create/_sources/hash.md rename to wrangles-docs/wrangle-docs/create/_sources/hash.md index 0356acd..49c1646 100644 --- a/my-docs-site/wrangle-docs/create/_sources/hash.md +++ b/wrangles-docs/wrangle-docs/create/_sources/hash.md @@ -90,8 +90,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/create.md | | Docs URL | /python/recipes/wrangles/create | | Legacy Path | docs/python/recipes/wrangles/create.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/create/_sources/index.md b/wrangles-docs/wrangle-docs/create/_sources/index.md similarity index 92% rename from my-docs-site/wrangle-docs/create/_sources/index.md rename to wrangles-docs/wrangle-docs/create/_sources/index.md index e4bfc39..33b833c 100644 --- a/my-docs-site/wrangle-docs/create/_sources/index.md +++ b/wrangles-docs/wrangle-docs/create/_sources/index.md @@ -89,8 +89,8 @@ _No sample available._ | Docs Path | docs/python/recipes/wrangles/create.md | | Docs URL | /python/recipes/wrangles/create | | Legacy Path | docs/python/recipes/wrangles/create.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/create/_sources/jinja.md b/wrangles-docs/wrangle-docs/create/_sources/jinja.md similarity index 94% rename from my-docs-site/wrangle-docs/create/_sources/jinja.md rename to wrangles-docs/wrangle-docs/create/_sources/jinja.md index 40c224f..30c7703 100644 --- a/my-docs-site/wrangle-docs/create/_sources/jinja.md +++ b/wrangles-docs/wrangle-docs/create/_sources/jinja.md @@ -92,8 +92,8 @@ Using `|` in YAML denotes a multi-line string that preserves line breaks. Use `> | Docs Path | docs/python/recipes/wrangles/create.md | | Docs URL | /python/recipes/wrangles/create | | Legacy Path | docs/python/recipes/wrangles/create.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/create/_sources/uuid.md b/wrangles-docs/wrangle-docs/create/_sources/uuid.md similarity index 91% rename from my-docs-site/wrangle-docs/create/_sources/uuid.md rename to wrangles-docs/wrangle-docs/create/_sources/uuid.md index 07412cd..03de2ea 100644 --- a/my-docs-site/wrangle-docs/create/_sources/uuid.md +++ b/wrangles-docs/wrangle-docs/create/_sources/uuid.md @@ -83,8 +83,8 @@ _No sample available._ | Docs Path | docs/python/recipes/wrangles/create.md | | Docs URL | /python/recipes/wrangles/create | | Legacy Path | docs/python/recipes/wrangles/create.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/create/create.md b/wrangles-docs/wrangle-docs/create/create.md similarity index 100% rename from my-docs-site/wrangle-docs/create/create.md rename to wrangles-docs/wrangle-docs/create/create.md diff --git a/my-docs-site/wrangle-docs/date/_sources/date-calculator.md b/wrangles-docs/wrangle-docs/date/_sources/date-calculator.md similarity index 93% rename from my-docs-site/wrangle-docs/date/_sources/date-calculator.md rename to wrangles-docs/wrangle-docs/date/_sources/date-calculator.md index 37ecdf3..4fbb4ca 100644 --- a/my-docs-site/wrangle-docs/date/_sources/date-calculator.md +++ b/wrangles-docs/wrangle-docs/date/_sources/date-calculator.md @@ -100,8 +100,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/standalone.md | | Docs URL | https://wrangles.io/en/python/recipes/wrangles/standalone | | Legacy Path | docs/python/recipes/wrangles/standalone.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/date/date.md b/wrangles-docs/wrangle-docs/date/date.md similarity index 100% rename from my-docs-site/wrangle-docs/date/date.md rename to wrangles-docs/wrangle-docs/date/date.md diff --git a/my-docs-site/wrangle-docs/extract/_sources/address.md b/wrangles-docs/wrangle-docs/extract/_sources/address.md similarity index 92% rename from my-docs-site/wrangle-docs/extract/_sources/address.md rename to wrangles-docs/wrangle-docs/extract/_sources/address.md index 891fc77..e5c6baa 100644 --- a/my-docs-site/wrangle-docs/extract/_sources/address.md +++ b/wrangles-docs/wrangle-docs/extract/_sources/address.md @@ -88,8 +88,8 @@ _No sample available._ | Docs Path | docs/python/recipes/wrangles/extract.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/extract | | Legacy Path | docs/python/recipes/wrangles/extract.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/extract/_sources/ai.md b/wrangles-docs/wrangle-docs/extract/_sources/ai.md similarity index 96% rename from my-docs-site/wrangle-docs/extract/_sources/ai.md rename to wrangles-docs/wrangle-docs/extract/_sources/ai.md index dfc010d..89af454 100644 --- a/my-docs-site/wrangle-docs/extract/_sources/ai.md +++ b/wrangles-docs/wrangle-docs/extract/_sources/ai.md @@ -211,8 +211,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/extract.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/extract | | Legacy Path | docs/python/recipes/wrangles/extract.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/extract/_sources/attributes.md b/wrangles-docs/wrangle-docs/extract/_sources/attributes.md similarity index 96% rename from my-docs-site/wrangle-docs/extract/_sources/attributes.md rename to wrangles-docs/wrangle-docs/extract/_sources/attributes.md index b0fe7ac..b85a6b3 100644 --- a/my-docs-site/wrangle-docs/extract/_sources/attributes.md +++ b/wrangles-docs/wrangle-docs/extract/_sources/attributes.md @@ -189,8 +189,8 @@ _No sample available._ | Docs Path | docs/python/recipes/wrangles/extract.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/extract | | Legacy Path | docs/python/recipes/wrangles/extract.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/extract/_sources/brackets.md b/wrangles-docs/wrangle-docs/extract/_sources/brackets.md similarity index 93% rename from my-docs-site/wrangle-docs/extract/_sources/brackets.md rename to wrangles-docs/wrangle-docs/extract/_sources/brackets.md index a44b0ff..887aa3d 100644 --- a/my-docs-site/wrangle-docs/extract/_sources/brackets.md +++ b/wrangles-docs/wrangle-docs/extract/_sources/brackets.md @@ -91,8 +91,8 @@ _No sample available._ | Docs Path | docs/python/recipes/wrangles/extract.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/extract | | Legacy Path | docs/python/recipes/wrangles/extract.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/extract/_sources/codes.md b/wrangles-docs/wrangle-docs/extract/_sources/codes.md similarity index 95% rename from my-docs-site/wrangle-docs/extract/_sources/codes.md rename to wrangles-docs/wrangle-docs/extract/_sources/codes.md index 79ea510..48438cf 100644 --- a/my-docs-site/wrangle-docs/extract/_sources/codes.md +++ b/wrangles-docs/wrangle-docs/extract/_sources/codes.md @@ -134,8 +134,8 @@ _No sample available._ | Docs Path | docs/python/recipes/wrangles/extract.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/extract | | Legacy Path | docs/python/recipes/wrangles/extract.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/extract/_sources/custom.md b/wrangles-docs/wrangle-docs/extract/_sources/custom.md similarity index 96% rename from my-docs-site/wrangle-docs/extract/_sources/custom.md rename to wrangles-docs/wrangle-docs/extract/_sources/custom.md index 4b48f66..8d379ce 100644 --- a/my-docs-site/wrangle-docs/extract/_sources/custom.md +++ b/wrangles-docs/wrangle-docs/extract/_sources/custom.md @@ -183,8 +183,8 @@ _No sample available._ | Docs Path | docs/python/recipes/wrangles/extract.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/extract | | Legacy Path | docs/python/recipes/wrangles/extract.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/extract/_sources/date-properties.md b/wrangles-docs/wrangle-docs/extract/_sources/date-properties.md similarity index 92% rename from my-docs-site/wrangle-docs/extract/_sources/date-properties.md rename to wrangles-docs/wrangle-docs/extract/_sources/date-properties.md index 919a6bb..6cf3fa1 100644 --- a/my-docs-site/wrangle-docs/extract/_sources/date-properties.md +++ b/wrangles-docs/wrangle-docs/extract/_sources/date-properties.md @@ -86,8 +86,8 @@ _No sample available._ | Docs Path | docs/python/recipes/wrangles/extract.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/extract | | Legacy Path | docs/python/recipes/wrangles/extract.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/extract/_sources/date-range.md b/wrangles-docs/wrangle-docs/extract/_sources/date-range.md similarity index 93% rename from my-docs-site/wrangle-docs/extract/_sources/date-range.md rename to wrangles-docs/wrangle-docs/extract/_sources/date-range.md index 94e9cf0..ccb70ba 100644 --- a/my-docs-site/wrangle-docs/extract/_sources/date-range.md +++ b/wrangles-docs/wrangle-docs/extract/_sources/date-range.md @@ -104,8 +104,8 @@ _No sample available._ | Docs Path | docs/python/recipes/wrangles/extract.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/extract | | Legacy Path | docs/python/recipes/wrangles/extract.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/extract/_sources/html.md b/wrangles-docs/wrangle-docs/extract/_sources/html.md similarity index 93% rename from my-docs-site/wrangle-docs/extract/_sources/html.md rename to wrangles-docs/wrangle-docs/extract/_sources/html.md index 7fbdd3f..849ef72 100644 --- a/my-docs-site/wrangle-docs/extract/_sources/html.md +++ b/wrangles-docs/wrangle-docs/extract/_sources/html.md @@ -122,8 +122,8 @@ _No sample available._ | Docs Path | docs/python/recipes/wrangles/extract.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/extract | | Legacy Path | docs/python/recipes/wrangles/extract.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/extract/_sources/properties.md b/wrangles-docs/wrangle-docs/extract/_sources/properties.md similarity index 94% rename from my-docs-site/wrangle-docs/extract/_sources/properties.md rename to wrangles-docs/wrangle-docs/extract/_sources/properties.md index 657000b..4815787 100644 --- a/my-docs-site/wrangle-docs/extract/_sources/properties.md +++ b/wrangles-docs/wrangle-docs/extract/_sources/properties.md @@ -125,8 +125,8 @@ _No sample available._ | Docs Path | docs/python/recipes/wrangles/extract.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/extract | | Legacy Path | docs/python/recipes/wrangles/extract.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/extract/_sources/regex.md b/wrangles-docs/wrangle-docs/extract/_sources/regex.md similarity index 94% rename from my-docs-site/wrangle-docs/extract/_sources/regex.md rename to wrangles-docs/wrangle-docs/extract/_sources/regex.md index 893ac70..451b127 100644 --- a/my-docs-site/wrangle-docs/extract/_sources/regex.md +++ b/wrangles-docs/wrangle-docs/extract/_sources/regex.md @@ -127,8 +127,8 @@ _No sample available._ | Docs Path | docs/python/recipes/wrangles/extract.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/extract | | Legacy Path | docs/python/recipes/wrangles/extract.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/extract/extract.md b/wrangles-docs/wrangle-docs/extract/extract.md similarity index 100% rename from my-docs-site/wrangle-docs/extract/extract.md rename to wrangles-docs/wrangle-docs/extract/extract.md diff --git a/my-docs-site/wrangle-docs/format/_sources/clean-whitespaces.md b/wrangles-docs/wrangle-docs/format/_sources/clean-whitespaces.md similarity index 91% rename from my-docs-site/wrangle-docs/format/_sources/clean-whitespaces.md rename to wrangles-docs/wrangle-docs/format/_sources/clean-whitespaces.md index e91cb2d..bb462b3 100644 --- a/my-docs-site/wrangle-docs/format/_sources/clean-whitespaces.md +++ b/wrangles-docs/wrangle-docs/format/_sources/clean-whitespaces.md @@ -87,8 +87,8 @@ wrangles: | Docs Path | docs/excel/standardize.md | | Docs URL | https://wrangles.io/en/python/recipes/wrangles/standalone | | Legacy Path | docs/excel/standardize.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/format/_sources/dates.md b/wrangles-docs/wrangle-docs/format/_sources/dates.md similarity index 92% rename from my-docs-site/wrangle-docs/format/_sources/dates.md rename to wrangles-docs/wrangle-docs/format/_sources/dates.md index 3721e34..1a1eb5a 100644 --- a/my-docs-site/wrangle-docs/format/_sources/dates.md +++ b/wrangles-docs/wrangle-docs/format/_sources/dates.md @@ -88,8 +88,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/format.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/format | | Legacy Path | docs/python/recipes/wrangles/format.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/format/_sources/pad.md b/wrangles-docs/wrangle-docs/format/_sources/pad.md similarity index 93% rename from my-docs-site/wrangle-docs/format/_sources/pad.md rename to wrangles-docs/wrangle-docs/format/_sources/pad.md index 8d9daca..7e8548b 100644 --- a/my-docs-site/wrangle-docs/format/_sources/pad.md +++ b/wrangles-docs/wrangle-docs/format/_sources/pad.md @@ -101,8 +101,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/format.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/format | | Legacy Path | docs/python/recipes/wrangles/format.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/format/_sources/prefix.md b/wrangles-docs/wrangle-docs/format/_sources/prefix.md similarity index 92% rename from my-docs-site/wrangle-docs/format/_sources/prefix.md rename to wrangles-docs/wrangle-docs/format/_sources/prefix.md index 0dde6a2..2eabd5f 100644 --- a/my-docs-site/wrangle-docs/format/_sources/prefix.md +++ b/wrangles-docs/wrangle-docs/format/_sources/prefix.md @@ -94,8 +94,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/format.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/format | | Legacy Path | docs/python/recipes/wrangles/format.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/format/_sources/remove-duplicates.md b/wrangles-docs/wrangle-docs/format/_sources/remove-duplicates.md similarity index 93% rename from my-docs-site/wrangle-docs/format/_sources/remove-duplicates.md rename to wrangles-docs/wrangle-docs/format/_sources/remove-duplicates.md index f867683..aa0eae9 100644 --- a/my-docs-site/wrangle-docs/format/_sources/remove-duplicates.md +++ b/wrangles-docs/wrangle-docs/format/_sources/remove-duplicates.md @@ -90,8 +90,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/format.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/format | | Legacy Path | docs/python/recipes/wrangles/format.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/format/_sources/remove-words.md b/wrangles-docs/wrangle-docs/format/_sources/remove-words.md similarity index 93% rename from my-docs-site/wrangle-docs/format/_sources/remove-words.md rename to wrangles-docs/wrangle-docs/format/_sources/remove-words.md index 5fdd4d2..b3b7500 100644 --- a/my-docs-site/wrangle-docs/format/_sources/remove-words.md +++ b/wrangles-docs/wrangle-docs/format/_sources/remove-words.md @@ -98,8 +98,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/standalone.md | | Docs URL | https://wrangles.io/en/python/recipes/wrangles/standalone | | Legacy Path | docs/python/recipes/wrangles/standalone.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/format/_sources/replace.md b/wrangles-docs/wrangle-docs/format/_sources/replace.md similarity index 92% rename from my-docs-site/wrangle-docs/format/_sources/replace.md rename to wrangles-docs/wrangle-docs/format/_sources/replace.md index e787955..6bbaeaa 100644 --- a/my-docs-site/wrangle-docs/format/_sources/replace.md +++ b/wrangles-docs/wrangle-docs/format/_sources/replace.md @@ -96,8 +96,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/standalone.md | | Docs URL | https://wrangles.io/en/python/recipes/wrangles/standalone | | Legacy Path | docs/python/recipes/wrangles/standalone.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/format/_sources/round.md b/wrangles-docs/wrangle-docs/format/_sources/round.md similarity index 92% rename from my-docs-site/wrangle-docs/format/_sources/round.md rename to wrangles-docs/wrangle-docs/format/_sources/round.md index d4760f2..88b6cd0 100644 --- a/my-docs-site/wrangle-docs/format/_sources/round.md +++ b/wrangles-docs/wrangle-docs/format/_sources/round.md @@ -90,8 +90,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/standalone.md | | Docs URL | https://wrangles.io/en/python/recipes/wrangles/standalone | | Legacy Path | docs/python/recipes/wrangles/standalone.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/format/_sources/significant-figures.md b/wrangles-docs/wrangle-docs/format/_sources/significant-figures.md similarity index 92% rename from my-docs-site/wrangle-docs/format/_sources/significant-figures.md rename to wrangles-docs/wrangle-docs/format/_sources/significant-figures.md index 8b00176..78be110 100644 --- a/my-docs-site/wrangle-docs/format/_sources/significant-figures.md +++ b/wrangles-docs/wrangle-docs/format/_sources/significant-figures.md @@ -92,8 +92,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/format.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/format | | Legacy Path | docs/python/recipes/wrangles/format.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/format/_sources/standardize.md b/wrangles-docs/wrangle-docs/format/_sources/standardize.md similarity index 93% rename from my-docs-site/wrangle-docs/format/_sources/standardize.md rename to wrangles-docs/wrangle-docs/format/_sources/standardize.md index 8251ad2..181f732 100644 --- a/my-docs-site/wrangle-docs/format/_sources/standardize.md +++ b/wrangles-docs/wrangle-docs/format/_sources/standardize.md @@ -92,8 +92,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/standalone.md | | Docs URL | https://wrangles.io/en/python/recipes/wrangles/standalone | | Legacy Path | docs/python/recipes/wrangles/standalone.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/format/_sources/suffix.md b/wrangles-docs/wrangle-docs/format/_sources/suffix.md similarity index 92% rename from my-docs-site/wrangle-docs/format/_sources/suffix.md rename to wrangles-docs/wrangle-docs/format/_sources/suffix.md index 7bbde2c..717e288 100644 --- a/my-docs-site/wrangle-docs/format/_sources/suffix.md +++ b/wrangles-docs/wrangle-docs/format/_sources/suffix.md @@ -94,8 +94,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/format.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/format | | Legacy Path | docs/python/recipes/wrangles/format.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/format/_sources/translate.md b/wrangles-docs/wrangle-docs/format/_sources/translate.md similarity index 94% rename from my-docs-site/wrangle-docs/format/_sources/translate.md rename to wrangles-docs/wrangle-docs/format/_sources/translate.md index e6d0186..bb1525a 100644 --- a/my-docs-site/wrangle-docs/format/_sources/translate.md +++ b/wrangles-docs/wrangle-docs/format/_sources/translate.md @@ -93,8 +93,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/standalone.md | | Docs URL | https://wrangles.io/en/python/recipes/wrangles/standalone | | Legacy Path | docs/python/recipes/wrangles/standalone.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/format/_sources/trim.md b/wrangles-docs/wrangle-docs/format/_sources/trim.md similarity index 92% rename from my-docs-site/wrangle-docs/format/_sources/trim.md rename to wrangles-docs/wrangle-docs/format/_sources/trim.md index 09c1822..f2fb65d 100644 --- a/my-docs-site/wrangle-docs/format/_sources/trim.md +++ b/wrangles-docs/wrangle-docs/format/_sources/trim.md @@ -90,8 +90,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/format.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/format | | Legacy Path | docs/python/recipes/wrangles/format.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/format/format.md b/wrangles-docs/wrangle-docs/format/format.md similarity index 100% rename from my-docs-site/wrangle-docs/format/format.md rename to wrangles-docs/wrangle-docs/format/format.md diff --git a/my-docs-site/wrangle-docs/index.md b/wrangles-docs/wrangle-docs/index.md similarity index 100% rename from my-docs-site/wrangle-docs/index.md rename to wrangles-docs/wrangle-docs/index.md diff --git a/my-docs-site/wrangle-docs/lookup/_sources/lookup.md b/wrangles-docs/wrangle-docs/lookup/_sources/lookup.md similarity index 93% rename from my-docs-site/wrangle-docs/lookup/_sources/lookup.md rename to wrangles-docs/wrangle-docs/lookup/_sources/lookup.md index a1f6ce0..ed970db 100644 --- a/my-docs-site/wrangle-docs/lookup/_sources/lookup.md +++ b/wrangles-docs/wrangle-docs/lookup/_sources/lookup.md @@ -92,8 +92,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/standalone.md | | Docs URL | https://wrangles.io/en/python/recipes/wrangles/standalone | | Legacy Path | docs/python/recipes/wrangles/standalone.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/lookup/lookup.md b/wrangles-docs/wrangle-docs/lookup/lookup.md similarity index 100% rename from my-docs-site/wrangle-docs/lookup/lookup.md rename to wrangles-docs/wrangle-docs/lookup/lookup.md diff --git a/my-docs-site/wrangle-docs/merge/_sources/coalesce.md b/wrangles-docs/wrangle-docs/merge/_sources/coalesce.md similarity index 92% rename from my-docs-site/wrangle-docs/merge/_sources/coalesce.md rename to wrangles-docs/wrangle-docs/merge/_sources/coalesce.md index 6286376..c820799 100644 --- a/my-docs-site/wrangle-docs/merge/_sources/coalesce.md +++ b/wrangles-docs/wrangle-docs/merge/_sources/coalesce.md @@ -91,8 +91,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/merge.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/merge | | Legacy Path | docs/python/recipes/wrangles/merge.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/merge/_sources/concatenate.md b/wrangles-docs/wrangle-docs/merge/_sources/concatenate.md similarity index 94% rename from my-docs-site/wrangle-docs/merge/_sources/concatenate.md rename to wrangles-docs/wrangle-docs/merge/_sources/concatenate.md index 8deecff..9f598c9 100644 --- a/my-docs-site/wrangle-docs/merge/_sources/concatenate.md +++ b/wrangles-docs/wrangle-docs/merge/_sources/concatenate.md @@ -129,8 +129,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/merge.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/merge | | Legacy Path | docs/python/recipes/wrangles/merge.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/merge/_sources/dictionaries.md b/wrangles-docs/wrangle-docs/merge/_sources/dictionaries.md similarity index 94% rename from my-docs-site/wrangle-docs/merge/_sources/dictionaries.md rename to wrangles-docs/wrangle-docs/merge/_sources/dictionaries.md index 9d95846..acb3e5d 100644 --- a/my-docs-site/wrangle-docs/merge/_sources/dictionaries.md +++ b/wrangles-docs/wrangle-docs/merge/_sources/dictionaries.md @@ -167,8 +167,8 @@ Note the extra dash in front of `Dict 2` excludes that column from the wildcard | Docs Path | docs/python/recipes/wrangles/merge.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/merge | | Legacy Path | docs/python/recipes/wrangles/merge.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/merge/_sources/key-value-pairs.md b/wrangles-docs/wrangle-docs/merge/_sources/key-value-pairs.md similarity index 93% rename from my-docs-site/wrangle-docs/merge/_sources/key-value-pairs.md rename to wrangles-docs/wrangle-docs/merge/_sources/key-value-pairs.md index e058a1a..78a2716 100644 --- a/my-docs-site/wrangle-docs/merge/_sources/key-value-pairs.md +++ b/wrangles-docs/wrangle-docs/merge/_sources/key-value-pairs.md @@ -128,8 +128,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/merge.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/merge | | Legacy Path | docs/python/recipes/wrangles/merge.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/merge/_sources/lists.md b/wrangles-docs/wrangle-docs/merge/_sources/lists.md similarity index 93% rename from my-docs-site/wrangle-docs/merge/_sources/lists.md rename to wrangles-docs/wrangle-docs/merge/_sources/lists.md index 2fafd2d..a9aaa94 100644 --- a/my-docs-site/wrangle-docs/merge/_sources/lists.md +++ b/wrangles-docs/wrangle-docs/merge/_sources/lists.md @@ -92,8 +92,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/merge.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/merge | | Legacy Path | docs/python/recipes/wrangles/merge.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/merge/_sources/to-dict.md b/wrangles-docs/wrangle-docs/merge/_sources/to-dict.md similarity index 92% rename from my-docs-site/wrangle-docs/merge/_sources/to-dict.md rename to wrangles-docs/wrangle-docs/merge/_sources/to-dict.md index f4c950d..49f2ac2 100644 --- a/my-docs-site/wrangle-docs/merge/_sources/to-dict.md +++ b/wrangles-docs/wrangle-docs/merge/_sources/to-dict.md @@ -87,8 +87,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/merge.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/merge | | Legacy Path | docs/python/recipes/wrangles/merge.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/merge/_sources/to-list.md b/wrangles-docs/wrangle-docs/merge/_sources/to-list.md similarity index 92% rename from my-docs-site/wrangle-docs/merge/_sources/to-list.md rename to wrangles-docs/wrangle-docs/merge/_sources/to-list.md index d5b103e..15497c6 100644 --- a/my-docs-site/wrangle-docs/merge/_sources/to-list.md +++ b/wrangles-docs/wrangle-docs/merge/_sources/to-list.md @@ -88,8 +88,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/merge.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/merge | | Legacy Path | docs/python/recipes/wrangles/merge.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/merge/merge.md b/wrangles-docs/wrangle-docs/merge/merge.md similarity index 100% rename from my-docs-site/wrangle-docs/merge/merge.md rename to wrangles-docs/wrangle-docs/merge/merge.md diff --git a/my-docs-site/wrangle-docs/search/_sources/find-links.md b/wrangles-docs/wrangle-docs/search/_sources/find-links.md similarity index 94% rename from my-docs-site/wrangle-docs/search/_sources/find-links.md rename to wrangles-docs/wrangle-docs/search/_sources/find-links.md index b087556..4c6cb31 100644 --- a/my-docs-site/wrangle-docs/search/_sources/find-links.md +++ b/wrangles-docs/wrangle-docs/search/_sources/find-links.md @@ -107,8 +107,8 @@ _Template based on the documented parameters; no published source example is cur | Docs Path | Not currently published on wrangles.io | | Docs URL | Not currently published on wrangles.io | | Legacy Path | Not currently published on wrangles.io | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/search/_sources/retrieve-link-content.md b/wrangles-docs/wrangle-docs/search/_sources/retrieve-link-content.md similarity index 94% rename from my-docs-site/wrangle-docs/search/_sources/retrieve-link-content.md rename to wrangles-docs/wrangle-docs/search/_sources/retrieve-link-content.md index 44a1e94..77ed693 100644 --- a/my-docs-site/wrangle-docs/search/_sources/retrieve-link-content.md +++ b/wrangles-docs/wrangle-docs/search/_sources/retrieve-link-content.md @@ -104,8 +104,8 @@ _Template based on the documented parameters; no published source example is cur | Docs Path | Not currently published on wrangles.io | | Docs URL | Not currently published on wrangles.io | | Legacy Path | Not currently published on wrangles.io | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/search/search.md b/wrangles-docs/wrangle-docs/search/search.md similarity index 100% rename from my-docs-site/wrangle-docs/search/search.md rename to wrangles-docs/wrangle-docs/search/search.md diff --git a/my-docs-site/wrangle-docs/select/_sources/columns.md b/wrangles-docs/wrangle-docs/select/_sources/columns.md similarity index 89% rename from my-docs-site/wrangle-docs/select/_sources/columns.md rename to wrangles-docs/wrangle-docs/select/_sources/columns.md index ff78d20..66faaaa 100644 --- a/my-docs-site/wrangle-docs/select/_sources/columns.md +++ b/wrangles-docs/wrangle-docs/select/_sources/columns.md @@ -80,8 +80,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/select.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/select | | Legacy Path | docs/python/recipes/wrangles/select.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/select/_sources/dictionary-element.md b/wrangles-docs/wrangle-docs/select/_sources/dictionary-element.md similarity index 96% rename from my-docs-site/wrangle-docs/select/_sources/dictionary-element.md rename to wrangles-docs/wrangle-docs/select/_sources/dictionary-element.md index ecc4157..0995084 100644 --- a/my-docs-site/wrangle-docs/select/_sources/dictionary-element.md +++ b/wrangles-docs/wrangle-docs/select/_sources/dictionary-element.md @@ -288,8 +288,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/select.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/select | | Legacy Path | docs/python/recipes/wrangles/select.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/select/_sources/drop.md b/wrangles-docs/wrangle-docs/select/_sources/drop.md similarity index 90% rename from my-docs-site/wrangle-docs/select/_sources/drop.md rename to wrangles-docs/wrangle-docs/select/_sources/drop.md index 6d191e5..39fa112 100644 --- a/my-docs-site/wrangle-docs/select/_sources/drop.md +++ b/wrangles-docs/wrangle-docs/select/_sources/drop.md @@ -81,8 +81,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/utilities.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/utilities | | Legacy Path | docs/python/recipes/wrangles/utilities.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/select/_sources/element.md b/wrangles-docs/wrangle-docs/select/_sources/element.md similarity index 91% rename from my-docs-site/wrangle-docs/select/_sources/element.md rename to wrangles-docs/wrangle-docs/select/_sources/element.md index 9e710f9..b933562 100644 --- a/my-docs-site/wrangle-docs/select/_sources/element.md +++ b/wrangles-docs/wrangle-docs/select/_sources/element.md @@ -87,8 +87,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/select.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/select | | Legacy Path | docs/python/recipes/wrangles/select.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/select/_sources/filter.md b/wrangles-docs/wrangle-docs/select/_sources/filter.md similarity index 95% rename from my-docs-site/wrangle-docs/select/_sources/filter.md rename to wrangles-docs/wrangle-docs/select/_sources/filter.md index d9d88fa..e0924e9 100644 --- a/my-docs-site/wrangle-docs/select/_sources/filter.md +++ b/wrangles-docs/wrangle-docs/select/_sources/filter.md @@ -111,8 +111,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/utilities.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/utilities | | Legacy Path | docs/python/recipes/wrangles/utilities.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/select/_sources/group-by.md b/wrangles-docs/wrangle-docs/select/_sources/group-by.md similarity index 95% rename from my-docs-site/wrangle-docs/select/_sources/group-by.md rename to wrangles-docs/wrangle-docs/select/_sources/group-by.md index 5610514..10adf92 100644 --- a/my-docs-site/wrangle-docs/select/_sources/group-by.md +++ b/wrangles-docs/wrangle-docs/select/_sources/group-by.md @@ -156,8 +156,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/select.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/select | | Legacy Path | docs/python/recipes/wrangles/select.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/select/_sources/head.md b/wrangles-docs/wrangle-docs/select/_sources/head.md similarity index 90% rename from my-docs-site/wrangle-docs/select/_sources/head.md rename to wrangles-docs/wrangle-docs/select/_sources/head.md index 080e032..345b4d8 100644 --- a/my-docs-site/wrangle-docs/select/_sources/head.md +++ b/wrangles-docs/wrangle-docs/select/_sources/head.md @@ -79,8 +79,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/select.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/select | | Legacy Path | docs/python/recipes/wrangles/select.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/select/_sources/highest-confidence.md b/wrangles-docs/wrangle-docs/select/_sources/highest-confidence.md similarity index 94% rename from my-docs-site/wrangle-docs/select/_sources/highest-confidence.md rename to wrangles-docs/wrangle-docs/select/_sources/highest-confidence.md index aa3f917..f1b162d 100644 --- a/my-docs-site/wrangle-docs/select/_sources/highest-confidence.md +++ b/wrangles-docs/wrangle-docs/select/_sources/highest-confidence.md @@ -128,8 +128,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/select.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/select | | Legacy Path | docs/python/recipes/wrangles/select.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/select/_sources/left.md b/wrangles-docs/wrangle-docs/select/_sources/left.md similarity index 92% rename from my-docs-site/wrangle-docs/select/_sources/left.md rename to wrangles-docs/wrangle-docs/select/_sources/left.md index c114b6f..f6fe895 100644 --- a/my-docs-site/wrangle-docs/select/_sources/left.md +++ b/wrangles-docs/wrangle-docs/select/_sources/left.md @@ -88,8 +88,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/select.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/select | | Legacy Path | docs/python/recipes/wrangles/select.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/select/_sources/length.md b/wrangles-docs/wrangle-docs/select/_sources/length.md similarity index 92% rename from my-docs-site/wrangle-docs/select/_sources/length.md rename to wrangles-docs/wrangle-docs/select/_sources/length.md index a0f00c5..ffac447 100644 --- a/my-docs-site/wrangle-docs/select/_sources/length.md +++ b/wrangles-docs/wrangle-docs/select/_sources/length.md @@ -85,8 +85,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/select.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/select | | Legacy Path | docs/python/recipes/wrangles/select.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/select/_sources/list-element.md b/wrangles-docs/wrangle-docs/select/_sources/list-element.md similarity index 93% rename from my-docs-site/wrangle-docs/select/_sources/list-element.md rename to wrangles-docs/wrangle-docs/select/_sources/list-element.md index a80cb4d..1a298fa 100644 --- a/my-docs-site/wrangle-docs/select/_sources/list-element.md +++ b/wrangles-docs/wrangle-docs/select/_sources/list-element.md @@ -93,8 +93,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/select.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/select | | Legacy Path | docs/python/recipes/wrangles/select.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/select/_sources/right.md b/wrangles-docs/wrangle-docs/select/_sources/right.md similarity index 92% rename from my-docs-site/wrangle-docs/select/_sources/right.md rename to wrangles-docs/wrangle-docs/select/_sources/right.md index a72c270..0b18877 100644 --- a/my-docs-site/wrangle-docs/select/_sources/right.md +++ b/wrangles-docs/wrangle-docs/select/_sources/right.md @@ -88,8 +88,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/select.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/select | | Legacy Path | docs/python/recipes/wrangles/select.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/select/_sources/sample.md b/wrangles-docs/wrangle-docs/select/_sources/sample.md similarity index 92% rename from my-docs-site/wrangle-docs/select/_sources/sample.md rename to wrangles-docs/wrangle-docs/select/_sources/sample.md index 911b7a8..c934932 100644 --- a/my-docs-site/wrangle-docs/select/_sources/sample.md +++ b/wrangles-docs/wrangle-docs/select/_sources/sample.md @@ -116,8 +116,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/select.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/select | | Legacy Path | docs/python/recipes/wrangles/select.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/select/_sources/sort.md b/wrangles-docs/wrangle-docs/select/_sources/sort.md similarity index 91% rename from my-docs-site/wrangle-docs/select/_sources/sort.md rename to wrangles-docs/wrangle-docs/select/_sources/sort.md index 2769c31..cefeefd 100644 --- a/my-docs-site/wrangle-docs/select/_sources/sort.md +++ b/wrangles-docs/wrangle-docs/select/_sources/sort.md @@ -89,8 +89,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/utilities.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/utilities | | Legacy Path | docs/python/recipes/wrangles/utilities.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/select/_sources/substring.md b/wrangles-docs/wrangle-docs/select/_sources/substring.md similarity index 94% rename from my-docs-site/wrangle-docs/select/_sources/substring.md rename to wrangles-docs/wrangle-docs/select/_sources/substring.md index 7c14c80..f4ce275 100644 --- a/my-docs-site/wrangle-docs/select/_sources/substring.md +++ b/wrangles-docs/wrangle-docs/select/_sources/substring.md @@ -163,8 +163,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/select.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/select | | Legacy Path | docs/python/recipes/wrangles/select.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/select/_sources/tail.md b/wrangles-docs/wrangle-docs/select/_sources/tail.md similarity index 90% rename from my-docs-site/wrangle-docs/select/_sources/tail.md rename to wrangles-docs/wrangle-docs/select/_sources/tail.md index 82ef2f5..2a12656 100644 --- a/my-docs-site/wrangle-docs/select/_sources/tail.md +++ b/wrangles-docs/wrangle-docs/select/_sources/tail.md @@ -79,8 +79,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/select.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/select | | Legacy Path | docs/python/recipes/wrangles/select.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/select/_sources/threshold.md b/wrangles-docs/wrangle-docs/select/_sources/threshold.md similarity index 92% rename from my-docs-site/wrangle-docs/select/_sources/threshold.md rename to wrangles-docs/wrangle-docs/select/_sources/threshold.md index 41f424a..a1dc5e3 100644 --- a/my-docs-site/wrangle-docs/select/_sources/threshold.md +++ b/wrangles-docs/wrangle-docs/select/_sources/threshold.md @@ -88,8 +88,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/select.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/select | | Legacy Path | docs/python/recipes/wrangles/select.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/select/select.md b/wrangles-docs/wrangle-docs/select/select.md similarity index 100% rename from my-docs-site/wrangle-docs/select/select.md rename to wrangles-docs/wrangle-docs/select/select.md diff --git a/my-docs-site/wrangle-docs/split/_sources/dictionary.md b/wrangles-docs/wrangle-docs/split/_sources/dictionary.md similarity index 96% rename from my-docs-site/wrangle-docs/split/_sources/dictionary.md rename to wrangles-docs/wrangle-docs/split/_sources/dictionary.md index f7c8632..82e259b 100644 --- a/my-docs-site/wrangle-docs/split/_sources/dictionary.md +++ b/wrangles-docs/wrangle-docs/split/_sources/dictionary.md @@ -265,8 +265,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/split.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/split | | Legacy Path | docs/python/recipes/wrangles/split.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/split/_sources/explode.md b/wrangles-docs/wrangle-docs/split/_sources/explode.md similarity index 92% rename from my-docs-site/wrangle-docs/split/_sources/explode.md rename to wrangles-docs/wrangle-docs/split/_sources/explode.md index d2ea42d..8a2a7df 100644 --- a/my-docs-site/wrangle-docs/split/_sources/explode.md +++ b/wrangles-docs/wrangle-docs/split/_sources/explode.md @@ -89,8 +89,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/utilities.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/utilities | | Legacy Path | docs/python/recipes/wrangles/utilities.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/split/_sources/list.md b/wrangles-docs/wrangle-docs/split/_sources/list.md similarity index 92% rename from my-docs-site/wrangle-docs/split/_sources/list.md rename to wrangles-docs/wrangle-docs/split/_sources/list.md index 31de806..6397377 100644 --- a/my-docs-site/wrangle-docs/split/_sources/list.md +++ b/wrangles-docs/wrangle-docs/split/_sources/list.md @@ -118,8 +118,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/split.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/split | | Legacy Path | docs/python/recipes/wrangles/split.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/split/_sources/text.md b/wrangles-docs/wrangle-docs/split/_sources/text.md similarity index 96% rename from my-docs-site/wrangle-docs/split/_sources/text.md rename to wrangles-docs/wrangle-docs/split/_sources/text.md index 855fdb9..7436d98 100644 --- a/my-docs-site/wrangle-docs/split/_sources/text.md +++ b/wrangles-docs/wrangle-docs/split/_sources/text.md @@ -244,8 +244,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/split.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/split | | Legacy Path | docs/python/recipes/wrangles/split.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/split/_sources/tokenize.md b/wrangles-docs/wrangle-docs/split/_sources/tokenize.md similarity index 93% rename from my-docs-site/wrangle-docs/split/_sources/tokenize.md rename to wrangles-docs/wrangle-docs/split/_sources/tokenize.md index 9fee370..20e1756 100644 --- a/my-docs-site/wrangle-docs/split/_sources/tokenize.md +++ b/wrangles-docs/wrangle-docs/split/_sources/tokenize.md @@ -123,8 +123,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/split.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/split | | Legacy Path | docs/python/recipes/wrangles/split.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/split/split.md b/wrangles-docs/wrangle-docs/split/split.md similarity index 100% rename from my-docs-site/wrangle-docs/split/split.md rename to wrangles-docs/wrangle-docs/split/split.md diff --git a/my-docs-site/wrangle-docs/transform/_sources/copy.md b/wrangles-docs/wrangle-docs/transform/_sources/copy.md similarity index 93% rename from my-docs-site/wrangle-docs/transform/_sources/copy.md rename to wrangles-docs/wrangle-docs/transform/_sources/copy.md index 79c9fb0..d2619c8 100644 --- a/my-docs-site/wrangle-docs/transform/_sources/copy.md +++ b/wrangles-docs/wrangle-docs/transform/_sources/copy.md @@ -123,8 +123,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/utilities.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/utilities | | Legacy Path | docs/python/recipes/wrangles/utilities.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/transform/_sources/reindex.md b/wrangles-docs/wrangle-docs/transform/_sources/reindex.md similarity index 93% rename from my-docs-site/wrangle-docs/transform/_sources/reindex.md rename to wrangles-docs/wrangle-docs/transform/_sources/reindex.md index e4fcc6c..fd1a241 100644 --- a/my-docs-site/wrangle-docs/transform/_sources/reindex.md +++ b/wrangles-docs/wrangle-docs/transform/_sources/reindex.md @@ -101,8 +101,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/utilities.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/utilities | | Legacy Path | docs/python/recipes/wrangles/utilities.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/transform/_sources/rename.md b/wrangles-docs/wrangle-docs/transform/_sources/rename.md similarity index 94% rename from my-docs-site/wrangle-docs/transform/_sources/rename.md rename to wrangles-docs/wrangle-docs/transform/_sources/rename.md index 5415b2a..a607fea 100644 --- a/my-docs-site/wrangle-docs/transform/_sources/rename.md +++ b/wrangles-docs/wrangle-docs/transform/_sources/rename.md @@ -171,8 +171,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/utilities.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/utilities | | Legacy Path | docs/python/recipes/wrangles/utilities.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/transform/_sources/transpose.md b/wrangles-docs/wrangle-docs/transform/_sources/transpose.md similarity index 91% rename from my-docs-site/wrangle-docs/transform/_sources/transpose.md rename to wrangles-docs/wrangle-docs/transform/_sources/transpose.md index 938b48a..efc9869 100644 --- a/my-docs-site/wrangle-docs/transform/_sources/transpose.md +++ b/wrangles-docs/wrangle-docs/transform/_sources/transpose.md @@ -80,8 +80,8 @@ wrangles: | Docs Path | docs/python/recipes/wrangles/utilities.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/utilities | | Legacy Path | docs/python/recipes/wrangles/utilities.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/transform/transform.md b/wrangles-docs/wrangle-docs/transform/transform.md similarity index 100% rename from my-docs-site/wrangle-docs/transform/transform.md rename to wrangles-docs/wrangle-docs/transform/transform.md diff --git a/my-docs-site/wrangle-docs/utility/_sources/accordion.md b/wrangles-docs/wrangle-docs/utility/_sources/accordion.md similarity index 100% rename from my-docs-site/wrangle-docs/utility/_sources/accordion.md rename to wrangles-docs/wrangle-docs/utility/_sources/accordion.md diff --git a/my-docs-site/wrangle-docs/utility/_sources/batch.md b/wrangles-docs/wrangle-docs/utility/_sources/batch.md similarity index 100% rename from my-docs-site/wrangle-docs/utility/_sources/batch.md rename to wrangles-docs/wrangle-docs/utility/_sources/batch.md diff --git a/my-docs-site/wrangle-docs/utility/_sources/concurrent.md b/wrangles-docs/wrangle-docs/utility/_sources/concurrent.md similarity index 100% rename from my-docs-site/wrangle-docs/utility/_sources/concurrent.md rename to wrangles-docs/wrangle-docs/utility/_sources/concurrent.md diff --git a/my-docs-site/wrangle-docs/utility/_sources/log.md b/wrangles-docs/wrangle-docs/utility/_sources/log.md similarity index 95% rename from my-docs-site/wrangle-docs/utility/_sources/log.md rename to wrangles-docs/wrangle-docs/utility/_sources/log.md index 87f61a1..1c2f2c5 100644 --- a/my-docs-site/wrangle-docs/utility/_sources/log.md +++ b/wrangles-docs/wrangle-docs/utility/_sources/log.md @@ -161,8 +161,8 @@ _Logs a sample of rows or status information to the configured destination._ | Docs Path | docs/python/recipes/wrangles/utilities.md | | Docs URL | https://wrangles.io/python/recipes/wrangles/utilities | | Legacy Path | docs/python/recipes/wrangles/utilities.md | -| Catalog Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | -| Mapping Source | my-docs-site/src/components/WrangleFlowPlayground/wrangleMappings.json | +| Catalog Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleCatalog.generated.js | +| Mapping Source | wrangles-docs/src/components/WrangleFlowPlayground/wrangleMappings.json | diff --git a/my-docs-site/wrangle-docs/utility/_sources/matrix.md b/wrangles-docs/wrangle-docs/utility/_sources/matrix.md similarity index 100% rename from my-docs-site/wrangle-docs/utility/_sources/matrix.md rename to wrangles-docs/wrangle-docs/utility/_sources/matrix.md diff --git a/my-docs-site/wrangle-docs/utility/_sources/try.md b/wrangles-docs/wrangle-docs/utility/_sources/try.md similarity index 100% rename from my-docs-site/wrangle-docs/utility/_sources/try.md rename to wrangles-docs/wrangle-docs/utility/_sources/try.md diff --git a/my-docs-site/wrangle-docs/utility/utility.md b/wrangles-docs/wrangle-docs/utility/utility.md similarity index 100% rename from my-docs-site/wrangle-docs/utility/utility.md rename to wrangles-docs/wrangle-docs/utility/utility.md diff --git a/my-docs-site/wrangle-docs/wrangle_template.md b/wrangles-docs/wrangle-docs/wrangle_template.md similarity index 100% rename from my-docs-site/wrangle-docs/wrangle_template.md rename to wrangles-docs/wrangle-docs/wrangle_template.md