From d2db617f248b71a2194aaf8e03918a3ea9150ab6 Mon Sep 17 00:00:00 2001 From: Eric Hills <53243273+ebhills@users.noreply.github.com> Date: Sun, 6 Sep 2026 21:43:43 -0500 Subject: [PATCH] feat: add column semantics to wrangle registry --- registry/CONTRACT.md | 27 ++- registry/reports/runtime-reconciliation.json | 44 +++- registry/reports/runtime-reconciliation.md | 5 +- registry/schema/wrangle-entry.schema.json | 18 ++ registry/wrangles/_root/drop.md | 5 + registry/wrangles/_root/rename.md | 12 + registry/wrangles/extract/date-range.md | 9 + registry/wrangles/standardize/clean.md | 14 ++ wrangles-docs/package.json | 3 +- wrangles-docs/scripts/compile-registry.cjs | 142 +++++++++++- .../scripts/compile-registry.test.cjs | 211 ++++++++++++++++++ .../static/registry/contracts/accordion.json | 2 +- .../static/registry/contracts/batch.json | 2 +- .../static/registry/contracts/classify.json | 2 +- .../registry/contracts/clean-whitespaces.json | 2 +- .../registry/contracts/compare/lists.json | 2 +- .../registry/contracts/compare/text.json | 2 +- .../registry/contracts/compute/case-when.json | 2 +- .../compute/score-search-results.json | 2 +- .../static/registry/contracts/concurrent.json | 2 +- .../registry/contracts/convert/case.json | 2 +- .../registry/contracts/convert/data-type.json | 2 +- .../convert/fraction-to-decimal.json | 2 +- .../registry/contracts/convert/from-json.json | 2 +- .../registry/contracts/convert/from-yaml.json | 2 +- .../registry/contracts/convert/to-json.json | 2 +- .../registry/contracts/convert/to-yaml.json | 2 +- .../static/registry/contracts/copy.json | 2 +- .../registry/contracts/create/bins.json | 2 +- .../registry/contracts/create/column.json | 2 +- .../registry/contracts/create/embeddings.json | 2 +- .../registry/contracts/create/guid.json | 2 +- .../registry/contracts/create/hash.json | 2 +- .../registry/contracts/create/index.json | 2 +- .../registry/contracts/create/jinja.json | 2 +- .../registry/contracts/create/uuid.json | 2 +- .../registry/contracts/date-calculator.json | 2 +- .../static/registry/contracts/drop.json | 11 +- .../static/registry/contracts/explode.json | 2 +- .../registry/contracts/extract/address.json | 2 +- .../static/registry/contracts/extract/ai.json | 2 +- .../contracts/extract/attributes.json | 2 +- .../registry/contracts/extract/brackets.json | 2 +- .../registry/contracts/extract/codes.json | 2 +- .../registry/contracts/extract/custom.json | 2 +- .../contracts/extract/date-properties.json | 2 +- .../contracts/extract/date-range.json | 14 +- .../registry/contracts/extract/html.json | 2 +- .../contracts/extract/properties.json | 2 +- .../registry/contracts/extract/regex.json | 2 +- .../static/registry/contracts/filter.json | 2 +- .../registry/contracts/format/dates.json | 2 +- .../static/registry/contracts/format/pad.json | 2 +- .../registry/contracts/format/prefix.json | 2 +- .../contracts/format/price-breaks.json | 2 +- .../contracts/format/remove-duplicates.json | 2 +- .../contracts/format/significant-figures.json | 2 +- .../registry/contracts/format/suffix.json | 2 +- .../registry/contracts/format/trim.json | 2 +- .../registry/contracts/generate/ai.json | 2 +- .../registry/contracts/huggingface.json | 2 +- .../static/registry/contracts/log.json | 2 +- .../static/registry/contracts/lookup.json | 2 +- .../static/registry/contracts/math.json | 2 +- .../static/registry/contracts/maths.json | 2 +- .../static/registry/contracts/matrix.json | 2 +- .../registry/contracts/merge/coalesce.json | 2 +- .../registry/contracts/merge/concatenate.json | 2 +- .../contracts/merge/dictionaries.json | 2 +- .../contracts/merge/key-value-pairs.json | 2 +- .../registry/contracts/merge/lists.json | 2 +- .../registry/contracts/merge/to-dict.json | 2 +- .../registry/contracts/merge/to-list.json | 2 +- .../static/registry/contracts/python.json | 2 +- .../static/registry/contracts/recipe.json | 2 +- .../static/registry/contracts/reindex.json | 2 +- .../registry/contracts/remove-words.json | 2 +- .../static/registry/contracts/rename.json | 23 +- .../static/registry/contracts/replace.json | 2 +- .../static/registry/contracts/round.json | 2 +- .../registry/contracts/search/find-links.json | 2 +- .../search/retrieve-link-content.json | 2 +- .../registry/contracts/select/columns.json | 2 +- .../contracts/select/dictionary-element.json | 2 +- .../registry/contracts/select/element.json | 2 +- .../registry/contracts/select/group-by.json | 2 +- .../registry/contracts/select/head.json | 2 +- .../contracts/select/highest-confidence.json | 2 +- .../registry/contracts/select/left.json | 2 +- .../registry/contracts/select/length.json | 2 +- .../contracts/select/list-element.json | 2 +- .../registry/contracts/select/right.json | 2 +- .../registry/contracts/select/sample.json | 2 +- .../registry/contracts/select/substring.json | 2 +- .../registry/contracts/select/tail.json | 2 +- .../registry/contracts/select/threshold.json | 2 +- .../static/registry/contracts/similarity.json | 2 +- .../static/registry/contracts/sort.json | 2 +- .../registry/contracts/split/dictionary.json | 2 +- .../static/registry/contracts/split/list.json | 2 +- .../static/registry/contracts/split/text.json | 2 +- .../registry/contracts/split/tokenize.json | 2 +- .../static/registry/contracts/sql.json | 2 +- .../registry/contracts/standardize.json | 2 +- .../registry/contracts/standardize/clean.json | 26 ++- .../contracts/standardize/custom.json | 2 +- .../static/registry/contracts/translate.json | 2 +- .../static/registry/contracts/transpose.json | 2 +- .../static/registry/contracts/try.json | 2 +- wrangles-docs/static/registry/index.md | 2 +- wrangles-docs/static/registry/manifest.json | 210 ++++++++--------- .../registry/runtime/reconciliation.json | 2 +- .../schema/wrangle-contract.schema.json | 30 ++- .../registry/schema/wrangle-entry.schema.json | 28 +++ .../static/registry/wrangles/_root/drop.md | 5 + .../static/registry/wrangles/_root/rename.md | 12 + .../registry/wrangles/extract/date-range.md | 9 + .../registry/wrangles/standardize/clean.md | 14 ++ .../registry/recipe-writer.schema.json | 49 +++- .../schemas/recipes/registry/schema.json | 66 +++++- 120 files changed, 948 insertions(+), 231 deletions(-) create mode 100644 wrangles-docs/scripts/compile-registry.test.cjs diff --git a/registry/CONTRACT.md b/registry/CONTRACT.md index b2d02a9..d78dcda 100644 --- a/registry/CONTRACT.md +++ b/registry/CONTRACT.md @@ -200,6 +200,28 @@ 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. +Parameters whose values directly identify dataframe columns may also declare +optional `column_semantics`. Its `role` is `reference` when the value selects a +column that must exist before the step and `destination` when the value names a +column where the step writes results. Its `cardinality` is `scalar`, `list`, or +`scalar_or_list`, matching the accepted JSON Schema shape; nullability remains +part of the parameter's `schema` and does not change cardinality. The compiler +copies this object into each per-wrangle contract and emits it as the +`x-wrangles-column` annotation on the corresponding generated recipe-schema +property. + +Column semantics are valid only when every non-null value shape exposes column +identifiers directly: a scalar is a string or integer, and a list is an array +whose `items` schema accepts only strings or integers. Unconstrained arrays, +nested arrays, objects, mappings, and `$ref`/`allOf` shapes are not annotated. +Those forms require a future locator vocabulary that can say where within the +value the column identifier appears (for example, in a mapping key). + +This metadata describes column-name syntax, not dataframe state transitions. A +destination may create, overwrite, or conditionally reuse a column. The current +Registry has no validated effect vocabulary for add, rename, or remove, so +consumers must not infer those effects from `role` or parameter names. + Every parameter also declares one `param_group` from a small shared vocabulary: - `I/O` identifies input and output columns or structures. @@ -309,9 +331,12 @@ terminated by one newline (`utf8-newline-separated-sorted-v1`). ## Versioning and lifecycle -The pre-production Registry version is `0.2.0`. Version `0.2.0` makes the +The pre-production Registry version is `0.2.1`. Version `0.2.0` makes the fail-closed Recipe Writer eligibility decision required for every entry and adds the compiled-contract and integrity metadata consumed by Registry clients. +Version `0.2.1` introduces optional column-role and cardinality metadata plus +explicit direct-item schemas for its representative list parameters, while +retaining the `0.2` entry schema compatibility series. A production release will contain: diff --git a/registry/reports/runtime-reconciliation.json b/registry/reports/runtime-reconciliation.json index f7c7f44..47f7123 100644 --- a/registry/reports/runtime-reconciliation.json +++ b/registry/reports/runtime-reconciliation.json @@ -1,7 +1,7 @@ { "format": "wrangles-registry-reconciliation", "format_version": "0.2", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "runtime_source": { "repository": "https://github.com/wrangleworks/WranglesPY", "version": "1.20.2", @@ -1089,6 +1089,9 @@ "code": "schema_constraint_difference", "parameter": "columns", "registry_schema": { + "items": { + "type": "string" + }, "type": [ "string", "array" @@ -3254,6 +3257,12 @@ "code": "schema_constraint_difference", "parameter": "input", "registry_schema": { + "items": { + "type": [ + "string", + "integer" + ] + }, "type": [ "string", "integer", @@ -3273,6 +3282,9 @@ "code": "schema_constraint_difference", "parameter": "output", "registry_schema": { + "items": { + "type": "string" + }, "type": [ "string", "array", @@ -4261,6 +4273,30 @@ "type": "boolean" } }, + { + "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": "normalization", @@ -4293,6 +4329,12 @@ "code": "schema_constraint_difference", "parameter": "output", "registry_schema": { + "items": { + "type": [ + "string", + "integer" + ] + }, "type": [ "string", "integer", diff --git a/registry/reports/runtime-reconciliation.md b/registry/reports/runtime-reconciliation.md index 355e1bb..3d7a21b 100644 --- a/registry/reports/runtime-reconciliation.md +++ b/registry/reports/runtime-reconciliation.md @@ -4,7 +4,7 @@ Generated file. Do not edit directly. - Runtime version: `1.20.2` - Runtime source: [`7916bf158e8b7e561270a1bea7b808f88956edc4`](https://github.com/wrangleworks/WranglesPY/commit/7916bf158e8b7e561270a1bea7b808f88956edc4) -- Registry version: `0.2.0` +- Registry version: `0.2.1` - Runtime entries: 98 - Embedded Python schema docstrings: 96 - Existing quasi-registry records: 93 @@ -119,7 +119,7 @@ capabilities must reconcile; individual records can be curated in place later. | `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.clean` | `standardize.clean` | verified | 0 | 13 | | `standardize.custom` | `standardize.custom` | verified | 0 | 3 | | `translate` | `translate` | verified | 0 | 1 | | `transpose` | `transpose` | verified | 0 | 1 | @@ -365,6 +365,7 @@ capabilities must reconcile; individual records can be curated in place later. | `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 | `input` | 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. | diff --git a/registry/schema/wrangle-entry.schema.json b/registry/schema/wrangle-entry.schema.json index 74156bc..036a617 100644 --- a/registry/schema/wrangle-entry.schema.json +++ b/registry/schema/wrangle-entry.schema.json @@ -188,10 +188,28 @@ "Details" ] }, + "column_semantics": { + "$ref": "#/$defs/column_semantics" + }, "runtime_default": {}, "schema": {"type": "object", "minProperties": 1} } }, + "column_semantics": { + "type": "object", + "additionalProperties": false, + "required": ["role", "cardinality"], + "properties": { + "role": { + "enum": ["reference", "destination"], + "description": "Whether the parameter selects columns that exist before the step or names columns where the step writes results." + }, + "cardinality": { + "enum": ["scalar", "list", "scalar_or_list"], + "description": "Whether the parameter accepts one direct string/integer column identifier, an array whose direct items are string/integer identifiers, or either shape. Nullability is defined separately by the parameter schema; object and mapping-key locations require a future locator vocabulary." + } + } + }, "example": { "type": "object", "additionalProperties": false, diff --git a/registry/wrangles/_root/drop.md b/registry/wrangles/_root/drop.md index 7435a7e..9c5c190 100644 --- a/registry/wrangles/_root/drop.md +++ b/registry/wrangles/_root/drop.md @@ -34,10 +34,15 @@ parameters: description: Name of the column(s) to drop. required: true param_group: I/O + column_semantics: + role: reference + cardinality: scalar_or_list schema: type: - string - array + items: + type: string examples: [] sources: - id: runtime diff --git a/registry/wrangles/_root/rename.md b/registry/wrangles/_root/rename.md index 2dee332..e90e42e 100644 --- a/registry/wrangles/_root/rename.md +++ b/registry/wrangles/_root/rename.md @@ -35,6 +35,9 @@ parameters: description: Name or list of input columns. required: false param_group: I/O + column_semantics: + role: reference + cardinality: scalar_or_list runtime_default: null schema: type: @@ -42,16 +45,25 @@ parameters: - integer - array - 'null' + items: + type: + - string + - integer - name: output description: Name or list of output columns. required: false param_group: I/O + column_semantics: + role: destination + cardinality: scalar_or_list runtime_default: null schema: type: - string - array - 'null' + items: + type: string - name: wrangles description: >- Use wrangles to transform the column names. The input is named 'columns' and the final result diff --git a/registry/wrangles/extract/date-range.md b/registry/wrangles/extract/date-range.md index 7a4d4f3..ee36c9d 100644 --- a/registry/wrangles/extract/date-range.md +++ b/registry/wrangles/extract/date-range.md @@ -34,18 +34,27 @@ parameters: description: Name of the start date column. required: true param_group: I/O + column_semantics: + role: reference + cardinality: scalar schema: type: string - name: end_time description: Name of the end date column. required: true param_group: I/O + column_semantics: + role: reference + cardinality: scalar schema: type: string - name: output description: Name of the output column. required: true param_group: I/O + column_semantics: + role: destination + cardinality: scalar schema: type: string - name: range diff --git a/registry/wrangles/standardize/clean.md b/registry/wrangles/standardize/clean.md index fced91a..1eb6053 100644 --- a/registry/wrangles/standardize/clean.md +++ b/registry/wrangles/standardize/clean.md @@ -36,15 +36,25 @@ parameters: description: Name or list of input columns. required: true param_group: I/O + column_semantics: + role: reference + cardinality: scalar_or_list schema: type: - string - integer - array + items: + type: + - string + - integer - name: output description: Name or list of output columns. Defaults to overwriting input. required: false param_group: I/O + column_semantics: + role: destination + cardinality: scalar_or_list runtime_default: null schema: type: @@ -52,6 +62,10 @@ parameters: - integer - array - 'null' + items: + type: + - string + - integer - name: fix_encoding description: Repair mojibake and other reversible encoding errors. required: false diff --git a/wrangles-docs/package.json b/wrangles-docs/package.json index 2d2eb1e..db6f554 100644 --- a/wrangles-docs/package.json +++ b/wrangles-docs/package.json @@ -13,7 +13,8 @@ "clear": "docusaurus clear", "compile:registry": "node ./scripts/compile-registry.cjs", "bootstrap:registry": "node ./scripts/bootstrap-registry.cjs", - "check:registry": "node ./scripts/compile-registry.cjs --check", + "test:registry": "node --test ./scripts/compile-registry.test.cjs", + "check:registry": "npm run test:registry && node ./scripts/compile-registry.cjs --check", "prebuild": "npm run compile:registry", "generate:wrangle-catalog": "node ./scripts/generate-wrangle-catalog.cjs", "serve": "docusaurus serve", diff --git a/wrangles-docs/scripts/compile-registry.cjs b/wrangles-docs/scripts/compile-registry.cjs index 348c6fa..7a7241d 100644 --- a/wrangles-docs/scripts/compile-registry.cjs +++ b/wrangles-docs/scripts/compile-registry.cjs @@ -5,7 +5,7 @@ const path = require('node:path'); const crypto = require('node:crypto'); const yaml = require('js-yaml'); -const REGISTRY_VERSION = '0.2.0'; +const REGISTRY_VERSION = '0.2.1'; const ENTRY_SCHEMA_VERSION = '0.2'; const PUBLIC_ORIGIN = 'https://docs.wrangles.com'; const RECIPE_WRITER_BASELINE_COUNT = 88; @@ -65,6 +65,8 @@ const PARAM_GROUP_ORDER = [ 'Errors', 'Details', ]; +const COLUMN_ROLES = ['reference', 'destination']; +const COLUMN_CARDINALITIES = ['scalar', 'list', 'scalar_or_list']; const generatedFiles = new Map(); const errors = []; @@ -403,6 +405,125 @@ function validateSchemaFragment(fragment, source, label) { } } +function directColumnSchemaShapes(fragment) { + const shapes = new Set(); + const messages = []; + + function visit(value, location, listItem = false) { + if (!isObject(value)) { + messages.push(`${location} must be an object schema`); + return; + } + if (typeof value.$ref === 'string') { + messages.push( + `${location} uses $ref; indirect column locations require a future locator vocabulary`, + ); + return; + } + if (hasOwn(value, 'allOf')) { + messages.push( + `${location} uses allOf; indirect column locations require a future locator vocabulary`, + ); + return; + } + + const unions = ['anyOf', 'oneOf'].filter((keyword) => hasOwn(value, keyword)); + if (unions.length > 1 || (unions.length === 1 && hasOwn(value, 'type'))) { + messages.push(`${location} must use either type or one anyOf/oneOf union`); + return; + } + if (unions.length === 1) { + const keyword = unions[0]; + if (!Array.isArray(value[keyword])) { + messages.push(`${location}.${keyword} must be an array`); + return; + } + value[keyword].forEach((option, index) => + visit(option, `${location}.${keyword}[${index}]`, listItem)); + return; + } + + const declaredTypes = Array.isArray(value.type) ? value.type : [value.type]; + for (const type of declaredTypes) { + if (type === 'null' && !listItem) continue; + if (type === 'string' || type === 'integer') { + shapes.add(listItem ? 'list' : 'scalar'); + continue; + } + if (type === 'array' && !listItem) { + if (!isObject(value.items)) { + messages.push( + `${location} array items must be explicitly limited to string/integer column identifiers`, + ); + } else { + visit(value.items, `${location}.items`, true); + } + continue; + } + + const valueLocation = listItem ? 'array item' : 'parameter value'; + messages.push( + `${location} accepts unsupported ${valueLocation} type ${String(type)}; ` + + 'object, mapping, nested-list, and other indirect locations require a future locator vocabulary', + ); + } + } + + visit(fragment, 'schema'); + return {shapes, messages}; +} + +function validateColumnSemantics(parameter) { + if (!hasOwn(parameter, 'column_semantics')) return []; + + const semantics = parameter.column_semantics; + if (!isObject(semantics)) return ['column_semantics must be an object']; + + const messages = []; + const allowed = new Set(['role', 'cardinality']); + for (const key of Object.keys(semantics)) { + if (!allowed.has(key)) messages.push(`column_semantics has unknown field ${key}`); + } + for (const key of allowed) { + if (!hasOwn(semantics, key)) messages.push(`column_semantics.${key} is required`); + } + if (!COLUMN_ROLES.includes(semantics.role)) { + messages.push(`column_semantics.role must be one of: ${COLUMN_ROLES.join(', ')}`); + } + if (!COLUMN_CARDINALITIES.includes(semantics.cardinality)) { + messages.push( + `column_semantics.cardinality must be one of: ${COLUMN_CARDINALITIES.join(', ')}`, + ); + return messages; + } + + const schemaAnalysis = directColumnSchemaShapes(parameter.schema); + messages.push(...schemaAnalysis.messages); + if (schemaAnalysis.messages.length) return messages; + + const acceptsScalar = schemaAnalysis.shapes.has('scalar'); + const acceptsList = schemaAnalysis.shapes.has('list'); + const schemaCardinality = acceptsScalar && acceptsList + ? 'scalar_or_list' + : acceptsScalar + ? 'scalar' + : acceptsList + ? 'list' + : null; + + if (schemaCardinality === null) { + messages.push( + 'column_semantics requires schema to accept a string/integer column identifier or array', + ); + } else if (semantics.cardinality !== schemaCardinality) { + messages.push( + `column_semantics.cardinality ${semantics.cardinality} does not match schema shape ${schemaCardinality}`, + ); + } + + return messages; +} + function validateTopLevel(metadata, source, entrySchema) { const allowed = new Set(Object.keys(entrySchema.properties)); for (const required of entrySchema.required) { @@ -571,6 +692,7 @@ function validateParameters(metadata, source) { 'description', 'required', 'param_group', + 'column_semantics', 'runtime_default', 'schema', ]); @@ -606,6 +728,9 @@ function validateParameters(metadata, source) { fail(source, `${label}.param_group must be one of: ${PARAM_GROUP_ORDER.join(', ')}`); } validateSchemaFragment(parameter.schema, source, label); + for (const message of validateColumnSemantics(parameter)) { + fail(source, `${label}.${message}`); + } } } @@ -1274,6 +1399,9 @@ function schemaAcceptsValue(schema, value) { function buildParameterSchema(parameter) { const result = JSON.parse(JSON.stringify(parameter.schema)); result.description = parameter.description; + if (parameter.column_semantics) { + result['x-wrangles-column'] = JSON.parse(JSON.stringify(parameter.column_semantics)); + } if ( hasOwn(parameter, 'runtime_default') && schemaAcceptsValue(parameter.schema, parameter.runtime_default) @@ -2374,7 +2502,11 @@ async function main() { ); } -main().catch((error) => { - console.error(error.message); - process.exitCode = 1; -}); +if (require.main === module) { + main().catch((error) => { + console.error(error.message); + process.exitCode = 1; + }); +} + +module.exports = {validateColumnSemantics}; diff --git a/wrangles-docs/scripts/compile-registry.test.cjs b/wrangles-docs/scripts/compile-registry.test.cjs new file mode 100644 index 0000000..ea835cf --- /dev/null +++ b/wrangles-docs/scripts/compile-registry.test.cjs @@ -0,0 +1,211 @@ +const assert = require('node:assert/strict'); +const fs = require('node:fs'); +const path = require('node:path'); +const test = require('node:test'); + +const {validateColumnSemantics} = require('./compile-registry.cjs'); + +const siteRoot = path.resolve(__dirname, '..'); +const repositoryRoot = path.resolve(siteRoot, '..'); +const contractsRoot = path.join(siteRoot, 'static', 'registry', 'contracts'); +const entrySchemaPath = path.join( + repositoryRoot, + 'registry', + 'schema', + 'wrangle-entry.schema.json', +); +const recipeSchemaPath = path.join( + siteRoot, + 'static', + 'schemas', + 'recipes', + 'registry', + 'schema.json', +); +const recipeWriterSchemaPath = path.join( + siteRoot, + 'static', + 'schemas', + 'recipes', + 'registry', + 'recipe-writer.schema.json', +); + +function parameterContract(relativeContract, parameterName) { + const contract = JSON.parse( + fs.readFileSync(path.join(contractsRoot, relativeContract), 'utf8'), + ); + return contract.parameters.find((parameter) => parameter.name === parameterName); +} + +test('column semantics are optional and accept every supported cardinality', () => { + assert.deepEqual(validateColumnSemantics({schema: {type: 'boolean'}}), []); + + const validParameters = [ + { + column_semantics: {role: 'reference', cardinality: 'scalar'}, + schema: {type: ['string', 'null']}, + }, + { + column_semantics: {role: 'reference', cardinality: 'list'}, + schema: {type: 'array', items: {type: ['string', 'integer']}}, + }, + { + column_semantics: {role: 'destination', cardinality: 'scalar_or_list'}, + schema: { + type: ['string', 'integer', 'array', 'null'], + items: {type: ['string', 'integer']}, + }, + }, + ]; + + for (const parameter of validParameters) { + assert.deepEqual(validateColumnSemantics(parameter), []); + } +}); + +test('column semantics reject unknown fields, invalid roles, and schema mismatches', () => { + assert.deepEqual( + validateColumnSemantics({ + column_semantics: {role: 'source', cardinality: 'scalar', effect: 'add'}, + schema: {type: ['string', 'array'], items: {type: 'string'}}, + }), + [ + 'column_semantics has unknown field effect', + 'column_semantics.role must be one of: reference, destination', + 'column_semantics.cardinality scalar does not match schema shape scalar_or_list', + ], + ); + assert.deepEqual( + validateColumnSemantics({ + column_semantics: {role: 'destination', cardinality: 'scalar'}, + schema: {type: 'boolean'}, + }), + [ + 'schema accepts unsupported parameter value type boolean; object, mapping, nested-list, and other indirect locations require a future locator vocabulary', + ], + ); +}); + +test('column semantics reject non-column branches and indirect identifier locations', () => { + assert.deepEqual( + validateColumnSemantics({ + column_semantics: {role: 'destination', cardinality: 'scalar'}, + schema: {type: ['string', 'object']}, + }), + [ + 'schema accepts unsupported parameter value type object; object, mapping, nested-list, and other indirect locations require a future locator vocabulary', + ], + ); + assert.deepEqual( + validateColumnSemantics({ + column_semantics: {role: 'reference', cardinality: 'list'}, + schema: {type: 'array'}, + }), + ['schema array items must be explicitly limited to string/integer column identifiers'], + ); + assert.deepEqual( + validateColumnSemantics({ + column_semantics: {role: 'destination', cardinality: 'list'}, + schema: {type: 'array', items: {type: 'object'}}, + }), + [ + 'schema.items accepts unsupported array item type object; object, mapping, nested-list, and other indirect locations require a future locator vocabulary', + ], + ); + assert.deepEqual( + validateColumnSemantics({ + column_semantics: {role: 'reference', cardinality: 'scalar'}, + schema: {$ref: '#/$defs/column'}, + }), + ['schema uses $ref; indirect column locations require a future locator vocabulary'], + ); + assert.deepEqual( + validateColumnSemantics({ + column_semantics: {role: 'reference', cardinality: 'scalar'}, + schema: {allOf: [{type: 'string'}]}, + }), + ['schema uses allOf; indirect column locations require a future locator vocabulary'], + ); +}); + +test('entry schema publishes the closed column semantics vocabulary', () => { + const entrySchema = JSON.parse(fs.readFileSync(entrySchemaPath, 'utf8')); + const columnSemantics = entrySchema.$defs.column_semantics; + + assert.equal(columnSemantics.additionalProperties, false); + assert.deepEqual(columnSemantics.required, ['role', 'cardinality']); + assert.deepEqual(columnSemantics.properties.role.enum, ['reference', 'destination']); + assert.deepEqual( + columnSemantics.properties.cardinality.enum, + ['scalar', 'list', 'scalar_or_list'], + ); + assert.deepEqual( + entrySchema.$defs.parameter.properties.column_semantics, + {$ref: '#/$defs/column_semantics'}, + ); +}); + +test('compiled contracts preserve representative column semantics', () => { + const cases = [ + [ + 'standardize/clean.json', + 'input', + {role: 'reference', cardinality: 'scalar_or_list'}, + ], + [ + 'standardize/clean.json', + 'output', + {role: 'destination', cardinality: 'scalar_or_list'}, + ], + ['extract/date-range.json', 'start_time', {role: 'reference', cardinality: 'scalar'}], + ['extract/date-range.json', 'end_time', {role: 'reference', cardinality: 'scalar'}], + ['extract/date-range.json', 'output', {role: 'destination', cardinality: 'scalar'}], + ['drop.json', 'columns', {role: 'reference', cardinality: 'scalar_or_list'}], + ['rename.json', 'input', {role: 'reference', cardinality: 'scalar_or_list'}], + ['rename.json', 'output', {role: 'destination', cardinality: 'scalar_or_list'}], + ]; + + for (const [contract, parameterName, expected] of cases) { + assert.deepEqual(parameterContract(contract, parameterName).column_semantics, expected); + } + + for (const [contract, parameterName] of [ + ['create/column.json', 'output'], + ['create/embeddings.json', 'input'], + ['create/embeddings.json', 'output'], + ['merge/coalesce.json', 'input'], + ['merge/coalesce.json', 'output'], + ]) { + assert.equal(parameterContract(contract, parameterName).column_semantics, undefined); + } +}); + +test('recipe schema exposes column semantics as JSON Schema annotations', () => { + const schemas = [recipeSchemaPath, recipeWriterSchemaPath].map((filename) => + JSON.parse(fs.readFileSync(filename, 'utf8')), + ); + + for (const schema of schemas) { + const wrangles = schema.$defs.wrangles.items.properties; + assert.deepEqual( + wrangles['standardize.clean'].properties.input['x-wrangles-column'], + {role: 'reference', cardinality: 'scalar_or_list'}, + ); + assert.deepEqual(wrangles.drop.properties.columns['x-wrangles-column'], { + role: 'reference', + cardinality: 'scalar_or_list', + }); + assert.deepEqual( + wrangles['extract.date_range'].properties.start_time['x-wrangles-column'], + {role: 'reference', cardinality: 'scalar'}, + ); + assert.deepEqual( + wrangles['extract.date_range'].properties.output['x-wrangles-column'], + {role: 'destination', cardinality: 'scalar'}, + ); + assert.equal(wrangles['create.column'].properties.output['x-wrangles-column'], undefined); + assert.equal(wrangles['create.embeddings'].properties.input['x-wrangles-column'], undefined); + assert.equal(wrangles['merge.coalesce'].properties.input['x-wrangles-column'], undefined); + } +}); diff --git a/wrangles-docs/static/registry/contracts/accordion.json b/wrangles-docs/static/registry/contracts/accordion.json index 081b2d2..28354df 100644 --- a/wrangles-docs/static/registry/contracts/accordion.json +++ b/wrangles-docs/static/registry/contracts/accordion.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": null, diff --git a/wrangles-docs/static/registry/contracts/batch.json b/wrangles-docs/static/registry/contracts/batch.json index 4b859c7..0697d46 100644 --- a/wrangles-docs/static/registry/contracts/batch.json +++ b/wrangles-docs/static/registry/contracts/batch.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": null, diff --git a/wrangles-docs/static/registry/contracts/classify.json b/wrangles-docs/static/registry/contracts/classify.json index b941a09..c9df6a7 100644 --- a/wrangles-docs/static/registry/contracts/classify.json +++ b/wrangles-docs/static/registry/contracts/classify.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "06669ef8-cdd1-42f7-8078-98e0b7a42c30", diff --git a/wrangles-docs/static/registry/contracts/clean-whitespaces.json b/wrangles-docs/static/registry/contracts/clean-whitespaces.json index 9e71ef1..70c6361 100644 --- a/wrangles-docs/static/registry/contracts/clean-whitespaces.json +++ b/wrangles-docs/static/registry/contracts/clean-whitespaces.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "e36e15c4-f0ad-43f8-8555-ef683a8ab892", diff --git a/wrangles-docs/static/registry/contracts/compare/lists.json b/wrangles-docs/static/registry/contracts/compare/lists.json index b3f9202..04221e1 100644 --- a/wrangles-docs/static/registry/contracts/compare/lists.json +++ b/wrangles-docs/static/registry/contracts/compare/lists.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "a393225e-7ccf-4708-83f8-d5abd6ba9b1e", diff --git a/wrangles-docs/static/registry/contracts/compare/text.json b/wrangles-docs/static/registry/contracts/compare/text.json index ff05db9..c250fd3 100644 --- a/wrangles-docs/static/registry/contracts/compare/text.json +++ b/wrangles-docs/static/registry/contracts/compare/text.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "31905b74-ce58-45cd-8add-821cc04ab946", diff --git a/wrangles-docs/static/registry/contracts/compute/case-when.json b/wrangles-docs/static/registry/contracts/compute/case-when.json index 728d3b0..74e09d1 100644 --- a/wrangles-docs/static/registry/contracts/compute/case-when.json +++ b/wrangles-docs/static/registry/contracts/compute/case-when.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "9a9662e4-53d1-4932-8adf-bc3e7aa364ad", diff --git a/wrangles-docs/static/registry/contracts/compute/score-search-results.json b/wrangles-docs/static/registry/contracts/compute/score-search-results.json index 2308a5d..e23fd0b 100644 --- a/wrangles-docs/static/registry/contracts/compute/score-search-results.json +++ b/wrangles-docs/static/registry/contracts/compute/score-search-results.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "313a8ec0-cf13-4956-8d3b-5362b8641d0f", diff --git a/wrangles-docs/static/registry/contracts/concurrent.json b/wrangles-docs/static/registry/contracts/concurrent.json index 4cb2c18..b59e93a 100644 --- a/wrangles-docs/static/registry/contracts/concurrent.json +++ b/wrangles-docs/static/registry/contracts/concurrent.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": null, diff --git a/wrangles-docs/static/registry/contracts/convert/case.json b/wrangles-docs/static/registry/contracts/convert/case.json index 77e2cc5..53d7209 100644 --- a/wrangles-docs/static/registry/contracts/convert/case.json +++ b/wrangles-docs/static/registry/contracts/convert/case.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "12ff4120-3613-4801-8653-99c793477fbc", diff --git a/wrangles-docs/static/registry/contracts/convert/data-type.json b/wrangles-docs/static/registry/contracts/convert/data-type.json index 44cf1c6..f5baf27 100644 --- a/wrangles-docs/static/registry/contracts/convert/data-type.json +++ b/wrangles-docs/static/registry/contracts/convert/data-type.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "52384f01-7164-404f-8615-063e7677a588", diff --git a/wrangles-docs/static/registry/contracts/convert/fraction-to-decimal.json b/wrangles-docs/static/registry/contracts/convert/fraction-to-decimal.json index c3b37f1..ee084d2 100644 --- a/wrangles-docs/static/registry/contracts/convert/fraction-to-decimal.json +++ b/wrangles-docs/static/registry/contracts/convert/fraction-to-decimal.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "7c55752e-70ab-4809-8298-c59436127457", diff --git a/wrangles-docs/static/registry/contracts/convert/from-json.json b/wrangles-docs/static/registry/contracts/convert/from-json.json index 6e7c4d9..a174368 100644 --- a/wrangles-docs/static/registry/contracts/convert/from-json.json +++ b/wrangles-docs/static/registry/contracts/convert/from-json.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "e370dfcf-b0fe-4c48-8a52-6f34c47e7978", diff --git a/wrangles-docs/static/registry/contracts/convert/from-yaml.json b/wrangles-docs/static/registry/contracts/convert/from-yaml.json index f93cd82..299b8bd 100644 --- a/wrangles-docs/static/registry/contracts/convert/from-yaml.json +++ b/wrangles-docs/static/registry/contracts/convert/from-yaml.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "b1c20004-5f80-41c2-84d2-2d4601a033b5", diff --git a/wrangles-docs/static/registry/contracts/convert/to-json.json b/wrangles-docs/static/registry/contracts/convert/to-json.json index bce6fef..6f5f4b0 100644 --- a/wrangles-docs/static/registry/contracts/convert/to-json.json +++ b/wrangles-docs/static/registry/contracts/convert/to-json.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "94e54eb7-2b8c-4047-89d0-fb5d16baf396", diff --git a/wrangles-docs/static/registry/contracts/convert/to-yaml.json b/wrangles-docs/static/registry/contracts/convert/to-yaml.json index 4d0eea8..c2132fc 100644 --- a/wrangles-docs/static/registry/contracts/convert/to-yaml.json +++ b/wrangles-docs/static/registry/contracts/convert/to-yaml.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "4cd6252f-ce47-4a9d-8272-3d87e875b72a", diff --git a/wrangles-docs/static/registry/contracts/copy.json b/wrangles-docs/static/registry/contracts/copy.json index f3c8b6e..d1a701b 100644 --- a/wrangles-docs/static/registry/contracts/copy.json +++ b/wrangles-docs/static/registry/contracts/copy.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "b002fbdc-92c0-4347-889d-0f4bfeec99fa", diff --git a/wrangles-docs/static/registry/contracts/create/bins.json b/wrangles-docs/static/registry/contracts/create/bins.json index 1c8755d..fa9a843 100644 --- a/wrangles-docs/static/registry/contracts/create/bins.json +++ b/wrangles-docs/static/registry/contracts/create/bins.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "232e3ba0-4735-4934-88aa-0163181abb3f", diff --git a/wrangles-docs/static/registry/contracts/create/column.json b/wrangles-docs/static/registry/contracts/create/column.json index 22350ad..8e7207f 100644 --- a/wrangles-docs/static/registry/contracts/create/column.json +++ b/wrangles-docs/static/registry/contracts/create/column.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "5a18e2c8-ec7c-45f5-88fd-bb5c358a8b40", diff --git a/wrangles-docs/static/registry/contracts/create/embeddings.json b/wrangles-docs/static/registry/contracts/create/embeddings.json index dc576ca..b4bb3e5 100644 --- a/wrangles-docs/static/registry/contracts/create/embeddings.json +++ b/wrangles-docs/static/registry/contracts/create/embeddings.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "e3518afd-a819-40ec-8b49-eb25690220c1", diff --git a/wrangles-docs/static/registry/contracts/create/guid.json b/wrangles-docs/static/registry/contracts/create/guid.json index ab9102d..d553c19 100644 --- a/wrangles-docs/static/registry/contracts/create/guid.json +++ b/wrangles-docs/static/registry/contracts/create/guid.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "cf3aaab2-3d5b-4c9b-826e-7af7510521c9", diff --git a/wrangles-docs/static/registry/contracts/create/hash.json b/wrangles-docs/static/registry/contracts/create/hash.json index 730bcc1..cd94dc3 100644 --- a/wrangles-docs/static/registry/contracts/create/hash.json +++ b/wrangles-docs/static/registry/contracts/create/hash.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "11e8fc13-00d2-4779-8d87-6288b07de7e7", diff --git a/wrangles-docs/static/registry/contracts/create/index.json b/wrangles-docs/static/registry/contracts/create/index.json index 1a4fee3..6db1397 100644 --- a/wrangles-docs/static/registry/contracts/create/index.json +++ b/wrangles-docs/static/registry/contracts/create/index.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "0a4909ca-6e14-4da7-8a70-a7fd106d6944", diff --git a/wrangles-docs/static/registry/contracts/create/jinja.json b/wrangles-docs/static/registry/contracts/create/jinja.json index a6fe69a..2096bbc 100644 --- a/wrangles-docs/static/registry/contracts/create/jinja.json +++ b/wrangles-docs/static/registry/contracts/create/jinja.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "10fc6709-16d4-4eab-8f56-6cb5d170ea66", diff --git a/wrangles-docs/static/registry/contracts/create/uuid.json b/wrangles-docs/static/registry/contracts/create/uuid.json index 943489a..7fe94e7 100644 --- a/wrangles-docs/static/registry/contracts/create/uuid.json +++ b/wrangles-docs/static/registry/contracts/create/uuid.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "c376f3ff-2283-4c4c-8d7f-70db6f53ed19", diff --git a/wrangles-docs/static/registry/contracts/date-calculator.json b/wrangles-docs/static/registry/contracts/date-calculator.json index 0877809..a733588 100644 --- a/wrangles-docs/static/registry/contracts/date-calculator.json +++ b/wrangles-docs/static/registry/contracts/date-calculator.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "19cfeb4f-02af-4ab2-895c-0ff2bb5cce19", diff --git a/wrangles-docs/static/registry/contracts/drop.json b/wrangles-docs/static/registry/contracts/drop.json index b1f7835..d6c6de6 100644 --- a/wrangles-docs/static/registry/contracts/drop.json +++ b/wrangles-docs/static/registry/contracts/drop.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "363bffbf-397e-4975-8382-e9efa5e9eed6", @@ -43,11 +43,18 @@ "description": "Name of the column(s) to drop.", "required": true, "param_group": "I/O", + "column_semantics": { + "role": "reference", + "cardinality": "scalar_or_list" + }, "schema": { "type": [ "string", "array" - ] + ], + "items": { + "type": "string" + } } }, { diff --git a/wrangles-docs/static/registry/contracts/explode.json b/wrangles-docs/static/registry/contracts/explode.json index be794d2..0159227 100644 --- a/wrangles-docs/static/registry/contracts/explode.json +++ b/wrangles-docs/static/registry/contracts/explode.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "4e4b13ac-8d50-4b2c-85c8-2c31de1e817d", diff --git a/wrangles-docs/static/registry/contracts/extract/address.json b/wrangles-docs/static/registry/contracts/extract/address.json index 7d60cc7..b3d1534 100644 --- a/wrangles-docs/static/registry/contracts/extract/address.json +++ b/wrangles-docs/static/registry/contracts/extract/address.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "44153f95-4581-4cee-898e-b3b4714045fd", diff --git a/wrangles-docs/static/registry/contracts/extract/ai.json b/wrangles-docs/static/registry/contracts/extract/ai.json index 69d7895..1876b7d 100644 --- a/wrangles-docs/static/registry/contracts/extract/ai.json +++ b/wrangles-docs/static/registry/contracts/extract/ai.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "d9f89b00-fda3-4f4c-826c-6417b9390607", diff --git a/wrangles-docs/static/registry/contracts/extract/attributes.json b/wrangles-docs/static/registry/contracts/extract/attributes.json index c7e153a..25d166d 100644 --- a/wrangles-docs/static/registry/contracts/extract/attributes.json +++ b/wrangles-docs/static/registry/contracts/extract/attributes.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "03ccedef-c938-41f1-8980-280f1a91542e", diff --git a/wrangles-docs/static/registry/contracts/extract/brackets.json b/wrangles-docs/static/registry/contracts/extract/brackets.json index 23e6a8b..8c895d6 100644 --- a/wrangles-docs/static/registry/contracts/extract/brackets.json +++ b/wrangles-docs/static/registry/contracts/extract/brackets.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "9b4c15fa-2aaa-40c8-8834-6e835760bee5", diff --git a/wrangles-docs/static/registry/contracts/extract/codes.json b/wrangles-docs/static/registry/contracts/extract/codes.json index 908c977..3d699fc 100644 --- a/wrangles-docs/static/registry/contracts/extract/codes.json +++ b/wrangles-docs/static/registry/contracts/extract/codes.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "da591387-0fca-4842-8bcb-d19f561f0292", diff --git a/wrangles-docs/static/registry/contracts/extract/custom.json b/wrangles-docs/static/registry/contracts/extract/custom.json index fb3b441..346e9cd 100644 --- a/wrangles-docs/static/registry/contracts/extract/custom.json +++ b/wrangles-docs/static/registry/contracts/extract/custom.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "e8e96b76-86bf-41dc-8d16-825dcff9688b", diff --git a/wrangles-docs/static/registry/contracts/extract/date-properties.json b/wrangles-docs/static/registry/contracts/extract/date-properties.json index 1e29bf3..1ea73c7 100644 --- a/wrangles-docs/static/registry/contracts/extract/date-properties.json +++ b/wrangles-docs/static/registry/contracts/extract/date-properties.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "a346de62-93cd-44ba-8d30-a6305629c6d7", diff --git a/wrangles-docs/static/registry/contracts/extract/date-range.json b/wrangles-docs/static/registry/contracts/extract/date-range.json index 935d468..f3ba94f 100644 --- a/wrangles-docs/static/registry/contracts/extract/date-range.json +++ b/wrangles-docs/static/registry/contracts/extract/date-range.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "9cebfa6f-a524-4aec-84a7-02d77b792843", @@ -43,6 +43,10 @@ "description": "Name of the start date column.", "required": true, "param_group": "I/O", + "column_semantics": { + "role": "reference", + "cardinality": "scalar" + }, "schema": { "type": "string" } @@ -52,6 +56,10 @@ "description": "Name of the end date column.", "required": true, "param_group": "I/O", + "column_semantics": { + "role": "reference", + "cardinality": "scalar" + }, "schema": { "type": "string" } @@ -61,6 +69,10 @@ "description": "Name of the output column.", "required": true, "param_group": "I/O", + "column_semantics": { + "role": "destination", + "cardinality": "scalar" + }, "schema": { "type": "string" } diff --git a/wrangles-docs/static/registry/contracts/extract/html.json b/wrangles-docs/static/registry/contracts/extract/html.json index f85cb39..5c1c0c8 100644 --- a/wrangles-docs/static/registry/contracts/extract/html.json +++ b/wrangles-docs/static/registry/contracts/extract/html.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "728fc87a-a20d-4efa-833a-612e0b5eadc3", diff --git a/wrangles-docs/static/registry/contracts/extract/properties.json b/wrangles-docs/static/registry/contracts/extract/properties.json index 55813d4..7efa2f1 100644 --- a/wrangles-docs/static/registry/contracts/extract/properties.json +++ b/wrangles-docs/static/registry/contracts/extract/properties.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "23bbdb86-fd13-4b78-8fff-a7a76769ab63", diff --git a/wrangles-docs/static/registry/contracts/extract/regex.json b/wrangles-docs/static/registry/contracts/extract/regex.json index b9aedd1..23f3173 100644 --- a/wrangles-docs/static/registry/contracts/extract/regex.json +++ b/wrangles-docs/static/registry/contracts/extract/regex.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "9aa0253a-4b70-4737-832c-964e15967289", diff --git a/wrangles-docs/static/registry/contracts/filter.json b/wrangles-docs/static/registry/contracts/filter.json index b2c62cb..a1199bf 100644 --- a/wrangles-docs/static/registry/contracts/filter.json +++ b/wrangles-docs/static/registry/contracts/filter.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "e3242acf-d204-433f-8373-205b77481131", diff --git a/wrangles-docs/static/registry/contracts/format/dates.json b/wrangles-docs/static/registry/contracts/format/dates.json index b52a3e4..501da3f 100644 --- a/wrangles-docs/static/registry/contracts/format/dates.json +++ b/wrangles-docs/static/registry/contracts/format/dates.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "a3c15135-4f7a-4659-83fd-f657afa603c9", diff --git a/wrangles-docs/static/registry/contracts/format/pad.json b/wrangles-docs/static/registry/contracts/format/pad.json index 0e39991..47895bd 100644 --- a/wrangles-docs/static/registry/contracts/format/pad.json +++ b/wrangles-docs/static/registry/contracts/format/pad.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "76c19378-38f4-45aa-85d1-3cdf8f8aae29", diff --git a/wrangles-docs/static/registry/contracts/format/prefix.json b/wrangles-docs/static/registry/contracts/format/prefix.json index 93654c4..e926adf 100644 --- a/wrangles-docs/static/registry/contracts/format/prefix.json +++ b/wrangles-docs/static/registry/contracts/format/prefix.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "c12f99b9-2363-4da7-8405-7c73b87906e5", diff --git a/wrangles-docs/static/registry/contracts/format/price-breaks.json b/wrangles-docs/static/registry/contracts/format/price-breaks.json index b5d331d..59c28b4 100644 --- a/wrangles-docs/static/registry/contracts/format/price-breaks.json +++ b/wrangles-docs/static/registry/contracts/format/price-breaks.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": null, diff --git a/wrangles-docs/static/registry/contracts/format/remove-duplicates.json b/wrangles-docs/static/registry/contracts/format/remove-duplicates.json index 0711561..cccd09b 100644 --- a/wrangles-docs/static/registry/contracts/format/remove-duplicates.json +++ b/wrangles-docs/static/registry/contracts/format/remove-duplicates.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "283b9e78-b2b2-43d0-844f-9842c33120aa", diff --git a/wrangles-docs/static/registry/contracts/format/significant-figures.json b/wrangles-docs/static/registry/contracts/format/significant-figures.json index e8db779..5dae3d4 100644 --- a/wrangles-docs/static/registry/contracts/format/significant-figures.json +++ b/wrangles-docs/static/registry/contracts/format/significant-figures.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "a359f72a-5250-4dd8-84f6-8a8173bee0f6", diff --git a/wrangles-docs/static/registry/contracts/format/suffix.json b/wrangles-docs/static/registry/contracts/format/suffix.json index 824deff..0beef98 100644 --- a/wrangles-docs/static/registry/contracts/format/suffix.json +++ b/wrangles-docs/static/registry/contracts/format/suffix.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "8d127060-ba2d-4934-897f-07662e01e40b", diff --git a/wrangles-docs/static/registry/contracts/format/trim.json b/wrangles-docs/static/registry/contracts/format/trim.json index 540a3c6..34fcc74 100644 --- a/wrangles-docs/static/registry/contracts/format/trim.json +++ b/wrangles-docs/static/registry/contracts/format/trim.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "af16b3c1-c230-4868-8ebe-f574904a0c76", diff --git a/wrangles-docs/static/registry/contracts/generate/ai.json b/wrangles-docs/static/registry/contracts/generate/ai.json index ee51caf..f66dc0d 100644 --- a/wrangles-docs/static/registry/contracts/generate/ai.json +++ b/wrangles-docs/static/registry/contracts/generate/ai.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "12c31c6c-cade-484d-84ba-7f302bf6af52", diff --git a/wrangles-docs/static/registry/contracts/huggingface.json b/wrangles-docs/static/registry/contracts/huggingface.json index 6f12e80..d8927a2 100644 --- a/wrangles-docs/static/registry/contracts/huggingface.json +++ b/wrangles-docs/static/registry/contracts/huggingface.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "ae12cf20-4934-428f-84a9-a6898cb7ffe0", diff --git a/wrangles-docs/static/registry/contracts/log.json b/wrangles-docs/static/registry/contracts/log.json index 1dfee03..3078e54 100644 --- a/wrangles-docs/static/registry/contracts/log.json +++ b/wrangles-docs/static/registry/contracts/log.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "6177808e-aa2d-4d0b-8385-858b16948a5d", diff --git a/wrangles-docs/static/registry/contracts/lookup.json b/wrangles-docs/static/registry/contracts/lookup.json index 615c63e..8ab8c4a 100644 --- a/wrangles-docs/static/registry/contracts/lookup.json +++ b/wrangles-docs/static/registry/contracts/lookup.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "b3339193-d1cc-4c89-8ed6-901efa6d81be", diff --git a/wrangles-docs/static/registry/contracts/math.json b/wrangles-docs/static/registry/contracts/math.json index d7fb938..589dde5 100644 --- a/wrangles-docs/static/registry/contracts/math.json +++ b/wrangles-docs/static/registry/contracts/math.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "494b11ad-00c1-4748-8b93-6bec982f4fec", diff --git a/wrangles-docs/static/registry/contracts/maths.json b/wrangles-docs/static/registry/contracts/maths.json index abba552..22582d4 100644 --- a/wrangles-docs/static/registry/contracts/maths.json +++ b/wrangles-docs/static/registry/contracts/maths.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": null, diff --git a/wrangles-docs/static/registry/contracts/matrix.json b/wrangles-docs/static/registry/contracts/matrix.json index 0fc8318..eb27614 100644 --- a/wrangles-docs/static/registry/contracts/matrix.json +++ b/wrangles-docs/static/registry/contracts/matrix.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": null, diff --git a/wrangles-docs/static/registry/contracts/merge/coalesce.json b/wrangles-docs/static/registry/contracts/merge/coalesce.json index 1725244..0ecdc36 100644 --- a/wrangles-docs/static/registry/contracts/merge/coalesce.json +++ b/wrangles-docs/static/registry/contracts/merge/coalesce.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "25c1a60d-fa48-4b9a-8c03-0921d5b31049", diff --git a/wrangles-docs/static/registry/contracts/merge/concatenate.json b/wrangles-docs/static/registry/contracts/merge/concatenate.json index 922a82b..5b0ee0a 100644 --- a/wrangles-docs/static/registry/contracts/merge/concatenate.json +++ b/wrangles-docs/static/registry/contracts/merge/concatenate.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "6ff76728-e1f6-4d3d-8946-6aa3b7524b3f", diff --git a/wrangles-docs/static/registry/contracts/merge/dictionaries.json b/wrangles-docs/static/registry/contracts/merge/dictionaries.json index 2a90303..285d8d9 100644 --- a/wrangles-docs/static/registry/contracts/merge/dictionaries.json +++ b/wrangles-docs/static/registry/contracts/merge/dictionaries.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "93e27737-e966-4ba9-8777-4e96724ebfc4", diff --git a/wrangles-docs/static/registry/contracts/merge/key-value-pairs.json b/wrangles-docs/static/registry/contracts/merge/key-value-pairs.json index ae7ffcb..8e3cebe 100644 --- a/wrangles-docs/static/registry/contracts/merge/key-value-pairs.json +++ b/wrangles-docs/static/registry/contracts/merge/key-value-pairs.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "8a2cd37c-8ef7-4b05-8264-36512f5dd837", diff --git a/wrangles-docs/static/registry/contracts/merge/lists.json b/wrangles-docs/static/registry/contracts/merge/lists.json index 7104aea..d28ba74 100644 --- a/wrangles-docs/static/registry/contracts/merge/lists.json +++ b/wrangles-docs/static/registry/contracts/merge/lists.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "d9978f00-b3d4-4583-884e-a53b98a43e9a", diff --git a/wrangles-docs/static/registry/contracts/merge/to-dict.json b/wrangles-docs/static/registry/contracts/merge/to-dict.json index ab26408..e9ee4cd 100644 --- a/wrangles-docs/static/registry/contracts/merge/to-dict.json +++ b/wrangles-docs/static/registry/contracts/merge/to-dict.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "9b869210-0d89-403b-8409-7cecdb5f9c7c", diff --git a/wrangles-docs/static/registry/contracts/merge/to-list.json b/wrangles-docs/static/registry/contracts/merge/to-list.json index e3c5b88..3baadd8 100644 --- a/wrangles-docs/static/registry/contracts/merge/to-list.json +++ b/wrangles-docs/static/registry/contracts/merge/to-list.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "d5300fe7-c8a4-4a41-8f12-f2c1698678cc", diff --git a/wrangles-docs/static/registry/contracts/python.json b/wrangles-docs/static/registry/contracts/python.json index f268f69..42146ad 100644 --- a/wrangles-docs/static/registry/contracts/python.json +++ b/wrangles-docs/static/registry/contracts/python.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "c0398a11-7731-4e47-8df0-b07eea0b1d6c", diff --git a/wrangles-docs/static/registry/contracts/recipe.json b/wrangles-docs/static/registry/contracts/recipe.json index ea0e4e2..5663ac9 100644 --- a/wrangles-docs/static/registry/contracts/recipe.json +++ b/wrangles-docs/static/registry/contracts/recipe.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": null, diff --git a/wrangles-docs/static/registry/contracts/reindex.json b/wrangles-docs/static/registry/contracts/reindex.json index 5fa9cc1..bf2ea4f 100644 --- a/wrangles-docs/static/registry/contracts/reindex.json +++ b/wrangles-docs/static/registry/contracts/reindex.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "def87df8-72da-4e34-83c1-1fde25126257", diff --git a/wrangles-docs/static/registry/contracts/remove-words.json b/wrangles-docs/static/registry/contracts/remove-words.json index f6797a0..3bfd977 100644 --- a/wrangles-docs/static/registry/contracts/remove-words.json +++ b/wrangles-docs/static/registry/contracts/remove-words.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "543b96c3-f354-48be-8046-bf0cb9fbaf56", diff --git a/wrangles-docs/static/registry/contracts/rename.json b/wrangles-docs/static/registry/contracts/rename.json index 074253e..4f43736 100644 --- a/wrangles-docs/static/registry/contracts/rename.json +++ b/wrangles-docs/static/registry/contracts/rename.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "ab06898f-faf7-42e7-8275-5e3034a4d727", @@ -44,6 +44,10 @@ "description": "Name or list of input columns.", "required": false, "param_group": "I/O", + "column_semantics": { + "role": "reference", + "cardinality": "scalar_or_list" + }, "runtime_default": null, "schema": { "type": [ @@ -51,7 +55,13 @@ "integer", "array", "null" - ] + ], + "items": { + "type": [ + "string", + "integer" + ] + } } }, { @@ -59,13 +69,20 @@ "description": "Name or list of output columns.", "required": false, "param_group": "I/O", + "column_semantics": { + "role": "destination", + "cardinality": "scalar_or_list" + }, "runtime_default": null, "schema": { "type": [ "string", "array", "null" - ] + ], + "items": { + "type": "string" + } } }, { diff --git a/wrangles-docs/static/registry/contracts/replace.json b/wrangles-docs/static/registry/contracts/replace.json index 88fb0d3..0e70ead 100644 --- a/wrangles-docs/static/registry/contracts/replace.json +++ b/wrangles-docs/static/registry/contracts/replace.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "f0ab715e-9e0e-4614-83e4-5cd8ea08a09f", diff --git a/wrangles-docs/static/registry/contracts/round.json b/wrangles-docs/static/registry/contracts/round.json index 476c4c4..12c73d6 100644 --- a/wrangles-docs/static/registry/contracts/round.json +++ b/wrangles-docs/static/registry/contracts/round.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "12f3111b-8511-4e42-8d3f-b5302dc3b4e4", diff --git a/wrangles-docs/static/registry/contracts/search/find-links.json b/wrangles-docs/static/registry/contracts/search/find-links.json index 4365e02..d04e73f 100644 --- a/wrangles-docs/static/registry/contracts/search/find-links.json +++ b/wrangles-docs/static/registry/contracts/search/find-links.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "ec1f661b-2cbc-4a47-88e3-646179104376", diff --git a/wrangles-docs/static/registry/contracts/search/retrieve-link-content.json b/wrangles-docs/static/registry/contracts/search/retrieve-link-content.json index 7542fab..db916a6 100644 --- a/wrangles-docs/static/registry/contracts/search/retrieve-link-content.json +++ b/wrangles-docs/static/registry/contracts/search/retrieve-link-content.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "3d5faa87-9e96-48c0-8226-5ae566e8d76c", diff --git a/wrangles-docs/static/registry/contracts/select/columns.json b/wrangles-docs/static/registry/contracts/select/columns.json index e0d2c80..543187d 100644 --- a/wrangles-docs/static/registry/contracts/select/columns.json +++ b/wrangles-docs/static/registry/contracts/select/columns.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "bca12c60-3957-4dc5-83f7-5ee460df2a11", diff --git a/wrangles-docs/static/registry/contracts/select/dictionary-element.json b/wrangles-docs/static/registry/contracts/select/dictionary-element.json index e483efa..c320d50 100644 --- a/wrangles-docs/static/registry/contracts/select/dictionary-element.json +++ b/wrangles-docs/static/registry/contracts/select/dictionary-element.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "5adaeada-6da8-464f-84cb-9fb5ecc17e48", diff --git a/wrangles-docs/static/registry/contracts/select/element.json b/wrangles-docs/static/registry/contracts/select/element.json index 9da8827..c7fa729 100644 --- a/wrangles-docs/static/registry/contracts/select/element.json +++ b/wrangles-docs/static/registry/contracts/select/element.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "223d2f4e-3247-4189-8b6c-e73fe44c4266", diff --git a/wrangles-docs/static/registry/contracts/select/group-by.json b/wrangles-docs/static/registry/contracts/select/group-by.json index 36e51cd..3ded7d8 100644 --- a/wrangles-docs/static/registry/contracts/select/group-by.json +++ b/wrangles-docs/static/registry/contracts/select/group-by.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "c0af10b1-423a-416c-8cb5-7e7fe1164964", diff --git a/wrangles-docs/static/registry/contracts/select/head.json b/wrangles-docs/static/registry/contracts/select/head.json index 41da2f6..2a497b4 100644 --- a/wrangles-docs/static/registry/contracts/select/head.json +++ b/wrangles-docs/static/registry/contracts/select/head.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "237af1ec-db7d-415a-88b7-70586a2191fb", diff --git a/wrangles-docs/static/registry/contracts/select/highest-confidence.json b/wrangles-docs/static/registry/contracts/select/highest-confidence.json index 622635c..3395ed4 100644 --- a/wrangles-docs/static/registry/contracts/select/highest-confidence.json +++ b/wrangles-docs/static/registry/contracts/select/highest-confidence.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "00aad85d-8cc8-42e5-86f3-e4ff916e8ac2", diff --git a/wrangles-docs/static/registry/contracts/select/left.json b/wrangles-docs/static/registry/contracts/select/left.json index 0a6df0b..d864d99 100644 --- a/wrangles-docs/static/registry/contracts/select/left.json +++ b/wrangles-docs/static/registry/contracts/select/left.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "5cdd9857-0c77-43bf-80d7-d0a8cb6f980b", diff --git a/wrangles-docs/static/registry/contracts/select/length.json b/wrangles-docs/static/registry/contracts/select/length.json index a9a8ea2..4596a0d 100644 --- a/wrangles-docs/static/registry/contracts/select/length.json +++ b/wrangles-docs/static/registry/contracts/select/length.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "4d7a5f66-0a4a-40e0-8298-d5c55754423d", diff --git a/wrangles-docs/static/registry/contracts/select/list-element.json b/wrangles-docs/static/registry/contracts/select/list-element.json index 8df21b1..0eb2b46 100644 --- a/wrangles-docs/static/registry/contracts/select/list-element.json +++ b/wrangles-docs/static/registry/contracts/select/list-element.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "ec40495d-d29a-4f62-86dd-eafa43cf388a", diff --git a/wrangles-docs/static/registry/contracts/select/right.json b/wrangles-docs/static/registry/contracts/select/right.json index f8cb6c2..cdc0838 100644 --- a/wrangles-docs/static/registry/contracts/select/right.json +++ b/wrangles-docs/static/registry/contracts/select/right.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "89ee82ec-3bc5-4bfa-899b-7a1260ef9bdb", diff --git a/wrangles-docs/static/registry/contracts/select/sample.json b/wrangles-docs/static/registry/contracts/select/sample.json index e866934..9e50538 100644 --- a/wrangles-docs/static/registry/contracts/select/sample.json +++ b/wrangles-docs/static/registry/contracts/select/sample.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "95a84ab6-a66e-450f-8a4a-7a87e3a77932", diff --git a/wrangles-docs/static/registry/contracts/select/substring.json b/wrangles-docs/static/registry/contracts/select/substring.json index 73d32b7..ba84e68 100644 --- a/wrangles-docs/static/registry/contracts/select/substring.json +++ b/wrangles-docs/static/registry/contracts/select/substring.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "8befddf8-602e-4fa9-8f16-4c547210ebec", diff --git a/wrangles-docs/static/registry/contracts/select/tail.json b/wrangles-docs/static/registry/contracts/select/tail.json index 9897cc2..2ab6c56 100644 --- a/wrangles-docs/static/registry/contracts/select/tail.json +++ b/wrangles-docs/static/registry/contracts/select/tail.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "60853759-c160-49a4-87eb-036516a9d823", diff --git a/wrangles-docs/static/registry/contracts/select/threshold.json b/wrangles-docs/static/registry/contracts/select/threshold.json index 7cd2a28..2ee8d59 100644 --- a/wrangles-docs/static/registry/contracts/select/threshold.json +++ b/wrangles-docs/static/registry/contracts/select/threshold.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "af2a5dcc-0ec0-48d7-8fb4-f58d9c5391d2", diff --git a/wrangles-docs/static/registry/contracts/similarity.json b/wrangles-docs/static/registry/contracts/similarity.json index 29eb36f..b4098ec 100644 --- a/wrangles-docs/static/registry/contracts/similarity.json +++ b/wrangles-docs/static/registry/contracts/similarity.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "7c733344-4cce-4938-8013-53742fb46a90", diff --git a/wrangles-docs/static/registry/contracts/sort.json b/wrangles-docs/static/registry/contracts/sort.json index 169960c..b19d2c0 100644 --- a/wrangles-docs/static/registry/contracts/sort.json +++ b/wrangles-docs/static/registry/contracts/sort.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "1dcf06ad-898a-4d83-862c-4774be37a687", diff --git a/wrangles-docs/static/registry/contracts/split/dictionary.json b/wrangles-docs/static/registry/contracts/split/dictionary.json index 0534f49..8cb040a 100644 --- a/wrangles-docs/static/registry/contracts/split/dictionary.json +++ b/wrangles-docs/static/registry/contracts/split/dictionary.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "06ca98e4-d026-43f7-84eb-af246d401ba9", diff --git a/wrangles-docs/static/registry/contracts/split/list.json b/wrangles-docs/static/registry/contracts/split/list.json index dadc448..d1d575c 100644 --- a/wrangles-docs/static/registry/contracts/split/list.json +++ b/wrangles-docs/static/registry/contracts/split/list.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "3260b9f7-aae2-499f-8004-d211c2cf643e", diff --git a/wrangles-docs/static/registry/contracts/split/text.json b/wrangles-docs/static/registry/contracts/split/text.json index a4d1dce..700d6e4 100644 --- a/wrangles-docs/static/registry/contracts/split/text.json +++ b/wrangles-docs/static/registry/contracts/split/text.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "e76e43f7-d129-4bf8-87b4-a304a378b130", diff --git a/wrangles-docs/static/registry/contracts/split/tokenize.json b/wrangles-docs/static/registry/contracts/split/tokenize.json index 2189c3b..2df9bf2 100644 --- a/wrangles-docs/static/registry/contracts/split/tokenize.json +++ b/wrangles-docs/static/registry/contracts/split/tokenize.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "6cc88418-ae0c-43f6-84ee-31e0d5f838c3", diff --git a/wrangles-docs/static/registry/contracts/sql.json b/wrangles-docs/static/registry/contracts/sql.json index 00e1e55..b59b0c8 100644 --- a/wrangles-docs/static/registry/contracts/sql.json +++ b/wrangles-docs/static/registry/contracts/sql.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "467a06b1-a697-4d31-8061-7d83a719fd79", diff --git a/wrangles-docs/static/registry/contracts/standardize.json b/wrangles-docs/static/registry/contracts/standardize.json index 7bd7af6..474838a 100644 --- a/wrangles-docs/static/registry/contracts/standardize.json +++ b/wrangles-docs/static/registry/contracts/standardize.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "53cd3fdd-24e2-4411-8655-6014b92a3f3a", diff --git a/wrangles-docs/static/registry/contracts/standardize/clean.json b/wrangles-docs/static/registry/contracts/standardize/clean.json index f125f56..664f391 100644 --- a/wrangles-docs/static/registry/contracts/standardize/clean.json +++ b/wrangles-docs/static/registry/contracts/standardize/clean.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": null, @@ -43,12 +43,22 @@ "description": "Name or list of input columns.", "required": true, "param_group": "I/O", + "column_semantics": { + "role": "reference", + "cardinality": "scalar_or_list" + }, "schema": { "type": [ "string", "integer", "array" - ] + ], + "items": { + "type": [ + "string", + "integer" + ] + } } }, { @@ -56,6 +66,10 @@ "description": "Name or list of output columns. Defaults to overwriting input.", "required": false, "param_group": "I/O", + "column_semantics": { + "role": "destination", + "cardinality": "scalar_or_list" + }, "runtime_default": null, "schema": { "type": [ @@ -63,7 +77,13 @@ "integer", "array", "null" - ] + ], + "items": { + "type": [ + "string", + "integer" + ] + } } }, { diff --git a/wrangles-docs/static/registry/contracts/standardize/custom.json b/wrangles-docs/static/registry/contracts/standardize/custom.json index 0ac6884..f835faf 100644 --- a/wrangles-docs/static/registry/contracts/standardize/custom.json +++ b/wrangles-docs/static/registry/contracts/standardize/custom.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": null, diff --git a/wrangles-docs/static/registry/contracts/translate.json b/wrangles-docs/static/registry/contracts/translate.json index 0a45340..c8a10ad 100644 --- a/wrangles-docs/static/registry/contracts/translate.json +++ b/wrangles-docs/static/registry/contracts/translate.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "73c3ceb6-ffd8-4d74-8389-c83b99d33bb0", diff --git a/wrangles-docs/static/registry/contracts/transpose.json b/wrangles-docs/static/registry/contracts/transpose.json index 5468bbe..a55c057 100644 --- a/wrangles-docs/static/registry/contracts/transpose.json +++ b/wrangles-docs/static/registry/contracts/transpose.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": "8716347f-f286-49b2-8a0b-cb73292e7475", diff --git a/wrangles-docs/static/registry/contracts/try.json b/wrangles-docs/static/registry/contracts/try.json index f2256f5..c0c445f 100644 --- a/wrangles-docs/static/registry/contracts/try.json +++ b/wrangles-docs/static/registry/contracts/try.json @@ -1,7 +1,7 @@ { "$schema": "https://docs.wrangles.com/registry/schema/wrangle-contract.schema.json", "format": "wrangles-registry-entry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "schema_version": "0.2", "type": "wrangle", "id": null, diff --git a/wrangles-docs/static/registry/index.md b/wrangles-docs/static/registry/index.md index 3a0f6cc..4ae7b11 100644 --- a/wrangles-docs/static/registry/index.md +++ b/wrangles-docs/static/registry/index.md @@ -4,7 +4,7 @@ type: collection title: Wrangles Registry description: Public pre-production bundle for Wrangles recipe primitives. status: pre-production -registry_version: 0.2.0 +registry_version: 0.2.1 --- # Wrangles Registry diff --git a/wrangles-docs/static/registry/manifest.json b/wrangles-docs/static/registry/manifest.json index 0265dfd..31f2379 100644 --- a/wrangles-docs/static/registry/manifest.json +++ b/wrangles-docs/static/registry/manifest.json @@ -1,6 +1,6 @@ { "format": "wrangles-registry", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "contract_version": "0.2", "status": "pre-production", "compatibility": { @@ -2491,117 +2491,117 @@ "artifact_checksums": { "algorithm": "sha256", "files": { - "/registry/contracts/accordion.json": "d821b9170b19db9c89f74cb36f89a1d12a8a2b674f4ddd09593580ee83618752", - "/registry/contracts/batch.json": "18ade4f1c8190877006c0ab330e05f79570aa83e74ce9071c1ed8b85a5389ad3", - "/registry/contracts/classify.json": "7602bfaf8d1e87d492ae52ff8efe405c17e586ada22c379321e6309595b125f8", - "/registry/contracts/clean-whitespaces.json": "aae711f6b405397d404cb3234ce002fa6c99aea2e939ecd42ced80b256939cb0", - "/registry/contracts/compare/lists.json": "f6ff4d24d991b850284821af857ccd734cf67e4ffea81ad79282096e4249a569", - "/registry/contracts/compare/text.json": "c92bfb1b8e714b802c3a0f8f310f3a737cd2860213503ca0f6a9507045584eb2", - "/registry/contracts/compute/case-when.json": "00b6276f058d75a70c96a834c35af54231c51c9bad14b4aa0180a6b1f2b2733e", - "/registry/contracts/compute/score-search-results.json": "008e859873dc73af787bb8a448754d2d02469fd1799a212df78cd65f9f13a7f6", - "/registry/contracts/concurrent.json": "574cab03f212362402e121fea032172499c898fe9e3b1a4490eaf03f74520f44", - "/registry/contracts/convert/case.json": "d5b09a0f09411f8edc494943efaaf476462fdf3b44fe88863e3b64fe0b41124a", - "/registry/contracts/convert/data-type.json": "63af94c162402f1eea2f870183464bb6d3df0b1f93785b308bf32eb4eb4d93ca", - "/registry/contracts/convert/fraction-to-decimal.json": "8cc09a5a816b272eb27640ce4d6d41b130ac7c21383eac9905810c52c769b695", - "/registry/contracts/convert/from-json.json": "988b004cf69e657245a6100f60108b66a047c162e1b10d71ee9e038816888c58", - "/registry/contracts/convert/from-yaml.json": "ca8f7ce9c261a8b9372fc208ceb278e111cfae6cfc5d13c832d6b0a91c412bcc", - "/registry/contracts/convert/to-json.json": "03507552968dde1f59d4cc7032d41f87dda79cf7ee11c8f3e0ef31742cd42295", - "/registry/contracts/convert/to-yaml.json": "11f0279c17f1c308215c35fb74d4421d3cbcd130b94ceb65b8aba2b4441b5bb3", - "/registry/contracts/copy.json": "9b416697dd96f30af849ff7aa7e8c7b3bb6b18b1a8b2d9ab22fb12993b73a4d8", - "/registry/contracts/create/bins.json": "124939d9b76c51b31b3614b7d0695cd26055fa053fe78b986b5e8cca15faea03", - "/registry/contracts/create/column.json": "73a624c913e8517dc25134bc3ee441ba9bee76a5d70bb1ee49e19f096fdadae9", - "/registry/contracts/create/embeddings.json": "5c339710f6af29662b6117542948ff93ad1f6470a89b06bd6382c9df4b637f9e", - "/registry/contracts/create/guid.json": "98d324c79335b884f0f299d163d2655dd064fb6a499a6c679962373fd4503782", - "/registry/contracts/create/hash.json": "1b2b22d2c54084696119441c12d307e3eb380c1e4703f21c9935fce87b2523be", - "/registry/contracts/create/index.json": "53ac836f0186ac3190bb59b90f4d29632ace343ace9198fde938891f04d5f174", - "/registry/contracts/create/jinja.json": "3352d1ae5b8e3a5a373eeaab0f17e3659873a2572eaf7962fd36d34d14cd437d", - "/registry/contracts/create/uuid.json": "4f6924916863b97cc04bcb77bfd7256949aa5e66f1e50e1abad9e32e7a6f3972", - "/registry/contracts/date-calculator.json": "5ef783cc4b11c5ee870389583298a10c6ce492f0b40ac359cc44b4d95c34f78d", - "/registry/contracts/drop.json": "9297e90b1370058797a23869ed19a35679adfcd6093bc00e3d72ecc1fa31d777", - "/registry/contracts/explode.json": "260ed2f38f2c4127d3b6729c183616ecac68964d693d27e0fd6a75b687f7b96a", - "/registry/contracts/extract/address.json": "f0c0da7ab04fcaed34be00280a94353ec00f3aa1310875b4c7dc45bfdebd4586", - "/registry/contracts/extract/ai.json": "03fd23c3acf0bbb19c655623844b4f7a7e717ac5b71a50594e20e2a6609d295f", - "/registry/contracts/extract/attributes.json": "ca0adfeb8f24536b3c1100f9c842bef26b9c4161ecab7c8de3ac89320579c58a", - "/registry/contracts/extract/brackets.json": "fbff20c250f3115a51db11ecd8e6702b26f333dcc669cc09344b8f78bd0ebe05", - "/registry/contracts/extract/codes.json": "d272b955042af101ae86fc2225108c37fdb284725bdc6d82d50fceb116f5bbda", - "/registry/contracts/extract/custom.json": "90172e9fc3217d7055942901dfa9651e17db119ecb88a043bb558ddb4f61d7cd", - "/registry/contracts/extract/date-properties.json": "e4c9a6a3526465523db1976a08ada426a834e6b5a7b6bca2f03ea5341429c717", - "/registry/contracts/extract/date-range.json": "041cf361fdf3610da2f8014ca25195df7e64d0a8bbb7f6fa2838e70a86993e47", - "/registry/contracts/extract/html.json": "3f6e0d3860f0a110a7c92f640b5fde95b7f46160af93a2b74f63a334ce387eeb", - "/registry/contracts/extract/properties.json": "41c754c64caf205372b7e67716cfbb4fab98db6101fdfbb7108654b7e82e4826", - "/registry/contracts/extract/regex.json": "c0a83c436201606c3d7da3a62ddc3ca170281cc86a62bab5b13683fe8ec92145", - "/registry/contracts/filter.json": "4da05aeeecbf5def51fc9bdb9fe693c78bc3e77082bad2252adcaf2bf2d97d7d", - "/registry/contracts/format/dates.json": "74848e19862c9fb3510ed0531f87d40c7a679e932c052c133a3f60bf890eb2a1", - "/registry/contracts/format/pad.json": "a8e38647628604f9b8d2a46504dc97c9c9498119d417238e4b7c5a579df75d0d", - "/registry/contracts/format/prefix.json": "3eb88cf0fbbd6ae599dd924e837233299667e96fe81f1c239ef352fe314a79b3", - "/registry/contracts/format/price-breaks.json": "33c1816580f880b5a72b5a338303827e0c1cccb0b3a54ecb5f2703d3c5d29e64", - "/registry/contracts/format/remove-duplicates.json": "ae604dc56c94cfafd732952286db201a6af7bbdd7f8b9c0d2cee85fe844b4473", - "/registry/contracts/format/significant-figures.json": "c5297b3f91fb392e6ae248fe55b069ee2a6f7ad51322e5730bfd9edec64c3a82", - "/registry/contracts/format/suffix.json": "0602d57b974a73fe2ff39e257a1a7460bd340b8311722cc7ff69c2a5cd92eaf6", - "/registry/contracts/format/trim.json": "e4703843093f1961db1546df09554cedce6fbc46b9e51910ed27956001ae5825", - "/registry/contracts/generate/ai.json": "e5be3a5757bee5e718dd0582f615671096e9356843a6bc269a6f5a23490a70c9", - "/registry/contracts/huggingface.json": "ea857526e3f056384159dcc3f7ea71f6a11e07908f652d6b52dd207f67fa3941", - "/registry/contracts/log.json": "01d2cd22e37d0421e890bfb170e88eb93cedc5cbd35154ecccc51e4fb086b466", - "/registry/contracts/lookup.json": "a95d025a681777cf090cc6c366ffa1d166461e12b961f10a7b6c8461ccbb2fd9", - "/registry/contracts/math.json": "6b800ecc277a2fcca8ffba485c6462468bbcaf9afe05214ac8545196e0036024", - "/registry/contracts/maths.json": "f56cb6e0841c5b1853ea51fe35eb6db47ac71d3c92fe30c12688bf1b9be490b6", - "/registry/contracts/matrix.json": "a18ccbed800c79988d78b7b5eec4284a9b7d5ddc4e75e5ce218602a557cd96dc", - "/registry/contracts/merge/coalesce.json": "96780c28ae57d275545cd39d51c4669132f64b514d028639e133a15538c472fd", - "/registry/contracts/merge/concatenate.json": "68bef0701ce799cf4dcd14e807546c8f53d11f86c173f605dc97db44c6c40675", - "/registry/contracts/merge/dictionaries.json": "338928d9aad8174f2373ff773d8009c82417b5f5a2d23b1fede20c568388eb6d", - "/registry/contracts/merge/key-value-pairs.json": "f257b650ac7119b576a75da1e080476872fdc1a61eb87a9fb047ac51ce96d2a2", - "/registry/contracts/merge/lists.json": "11805719f085a934f8d549048c9938c9c158f61e45cb89ced566d20688befa8e", - "/registry/contracts/merge/to-dict.json": "0352734e792f584dfbb6f76b97f6e7226b595606d100be922da7dbf09dcceb79", - "/registry/contracts/merge/to-list.json": "b0a47badefd0fe3f679045eaf53b81aa77365c5c4647c33106e3f0f251f6ac97", - "/registry/contracts/python.json": "1dc2b660654cb3127805a3bbd36e109e122e1ac78454e5c335aea6ead8838bc9", - "/registry/contracts/recipe.json": "9ef0c5c14823d82ad91ac1697eec5294a184122538c578b7f45de19cffe829b1", - "/registry/contracts/reindex.json": "fea95bf0fe49a9bd67cd4df1ab95c2c353bffa76e31d6893b0f25b274963bb70", - "/registry/contracts/remove-words.json": "9d094641963abd861be6c7ac6c0b4a084debcc5dbcb86277f6bedaf7bccb4c17", - "/registry/contracts/rename.json": "fb7fecf533e4589638ae0a2e6519eda003ff3cc4e1ae389b217d2ae284f9b7eb", - "/registry/contracts/replace.json": "4a978923beb47b191303cd7406e1276e6f5e93529ff117484b3604662f9682ab", - "/registry/contracts/round.json": "38a6928fb1f8d5faf104b5e626d0a6abb1573d223e0be39db3083e609258a76d", - "/registry/contracts/search/find-links.json": "57df3aa8919d3b56bd5972b55255748d53be47bbf751fd3edef40e2a33e945dc", - "/registry/contracts/search/retrieve-link-content.json": "bbd4bdd1899021845f9d8b2077355bb1822542ba9629a197e72a5ee433d33319", - "/registry/contracts/select/columns.json": "584e960206952da1a2725324f3303fd0cee0ce1e77c16ec0a026a0dc2f2a1bcb", - "/registry/contracts/select/dictionary-element.json": "dc56fa60465772ee378fe68a59c9713422efd6ad480a5a1b6882caf17d3c6be7", - "/registry/contracts/select/element.json": "7d7e64f3cc0103fd1fe3e62506bd124c2a4df2801c8626fee13018032ff2e321", - "/registry/contracts/select/group-by.json": "c9a6022b4e4db0ac97133833a33ce36d1b6b47266d98a2c9905f592e984a64ba", - "/registry/contracts/select/head.json": "5978909bf66ac338ff8f45e581f30ac076154661166f99b9dd6d296402984069", - "/registry/contracts/select/highest-confidence.json": "03c4486352033880b9c3df50b338bfeb2c34292c1416c75635210591e0fc592c", - "/registry/contracts/select/left.json": "ec0f12b3b1da48cff57654084a31fcfc2e9dc3595eac8614d78b160dfda84308", - "/registry/contracts/select/length.json": "3957edb256858a712266ee05092cb4a15766774939f3f736e2fee586dcdafccf", - "/registry/contracts/select/list-element.json": "e3b0c350f8139133b0e59c007423c3f91d15a67e182927e24d40605a999601f6", - "/registry/contracts/select/right.json": "689012cd5fd22775d6a8b584a7f71ea83f4d00e356701d244e41adddb08f4bb0", - "/registry/contracts/select/sample.json": "7d8c4e49b72d72d5a3e5f3977c928c3d6d7f2434bb7914e5cab42cf627d39343", - "/registry/contracts/select/substring.json": "b0398bbfb69c6928bef5334c7a76558d8ee211274500d8aa5868aff28777b36f", - "/registry/contracts/select/tail.json": "b0700ec023ac3a7cecde6b00992923ac240a00386d6e35ee4c5430eae8466d71", - "/registry/contracts/select/threshold.json": "07e179d3d56f3006bb1615e31f158e5bab0c529d61c047232b41406bc1c7e398", - "/registry/contracts/similarity.json": "bbbc3287a54923142606e51cee715d0924911424f77838f4c46fc624746e89b2", - "/registry/contracts/sort.json": "69abf4ad668a978170f506e7a8aa116e579f15b9feaa6ffd359fd4087ba98289", - "/registry/contracts/split/dictionary.json": "5d7d57de5a5a8a7dffd53cc9ff4610815fc4de8258c28d8beeafebc5cce25249", - "/registry/contracts/split/list.json": "fdbf104bfdeead7dbb6917c5cc537de45c965b826b0081a80343b3a785f67e9f", - "/registry/contracts/split/text.json": "637c0b2336c90d323f7b2d5805c03bcd98a7e0d83c7495b0abf27bca1d43a79d", - "/registry/contracts/split/tokenize.json": "d3152c7388c6c2ac034b2c705a2b6703dfa3502c1d55c3023e7ae8155af377d5", - "/registry/contracts/sql.json": "fc9d016336d683efa14e1c821cb6b2fa5d6248f71e5b765c898f92e482c67d7f", - "/registry/contracts/standardize.json": "e78e4c752df54659d8f661f78325877a6a26b6614dd272a905343e2a640d64cd", - "/registry/contracts/standardize/clean.json": "f49b053771f87a54573bddae9547fcb087564e7b44154ce397757796fdd66f6f", - "/registry/contracts/standardize/custom.json": "ddacb9b7427ec0384498409b3b1aa43825418095e3b94a894c106527f5056489", - "/registry/contracts/translate.json": "bc6f1f258ffd50b0d0c97b8dbeef5aa3c29821d413f2c241666935e00afa4a64", - "/registry/contracts/transpose.json": "5c5d2143a65431e43707ed295ee92cb01d44926706da71981b237ba33d5505ac", - "/registry/contracts/try.json": "827cd48651e9d4b9a2792eb30ed9b0e7e9105fa6efd666963f977c13e4d154ea", - "/registry/runtime/reconciliation.json": "e50e8e19a246b0ef7395d95843f3e5aac0131166c902a00bca7ac4fdd83f1405", + "/registry/contracts/accordion.json": "f77c178a9e6ff65600faaf97d70c644270e96941c1692e126aea89e2f11669d9", + "/registry/contracts/batch.json": "9a30b445239db58e167aac8d21ee495807e3afcbfb8ad0dea55561834f748aa6", + "/registry/contracts/classify.json": "b674aba578362ab3cdda2448c1bda5b75199dc3fb86dd1cb6a6da9bfe6c16289", + "/registry/contracts/clean-whitespaces.json": "e7cc6c0bd093bd59ec26640ef7e0977dc019e535bf14d3b3afe97e5c52f40f4f", + "/registry/contracts/compare/lists.json": "4f2a6db34204f1703096a82abad6fe4ff6a1ac52645763a9deebc03b662e351b", + "/registry/contracts/compare/text.json": "1492aead3002a3c4fc31ec17a94f58d0ccc4df439cbaf2258270e8d4065b8d88", + "/registry/contracts/compute/case-when.json": "c3075c3f46b69e92b90f163f8cec63db65abc7d40eb7953eb19e7f9f9407e787", + "/registry/contracts/compute/score-search-results.json": "4ffdf57783ee8c7539e1df3acc7b79ea99e464fe003a88bc4c22b44de65bc455", + "/registry/contracts/concurrent.json": "f4c9345d06900646c9a1083127f5f773a2e3078a67f4359c0cddba23ff675e6a", + "/registry/contracts/convert/case.json": "e5cf77dfd6bd82f603de0a4f4760ab25a05760162b2b8dd560833871c267c6ba", + "/registry/contracts/convert/data-type.json": "e674fdf9644cc7169187a9bd10b9ac5dfe007bf88f4ddb070b4d0d8a99bfc05d", + "/registry/contracts/convert/fraction-to-decimal.json": "574ed606087aba01145236429fa6c3bc9b3a3428292b582926c4e43ef39db78f", + "/registry/contracts/convert/from-json.json": "115849fb64a695a0405935fcb668c48b5b5188995c53545be9ef2eb6cc4ffcff", + "/registry/contracts/convert/from-yaml.json": "89e58b3ef17b89005aa8858b8e29a2b087fe70c676806c8b586fb8dae4071a30", + "/registry/contracts/convert/to-json.json": "3dd8777322f8cb7088469504419cce1e37bb3028a6cff759bebad1d7e2801401", + "/registry/contracts/convert/to-yaml.json": "d63637d898846e6da3327ff8abf14b0dcd19661f381ab7779ecadad565597844", + "/registry/contracts/copy.json": "10432998609cb1f7e97cb5da1ffb04fa2692b0113918b608eb7271c584608fd8", + "/registry/contracts/create/bins.json": "d4bda0b616a52d35af050e687be06ea7c2e35758698a286d940e741a3f98f91a", + "/registry/contracts/create/column.json": "a2e6650c37477ceb1f519717006d49c7717041dc9f18e3ec9897b4cb700a62ba", + "/registry/contracts/create/embeddings.json": "7a14ff9d466e430c61b43b0fd5da193a1e2e2c915290ba5938d32e1bd62d4533", + "/registry/contracts/create/guid.json": "537eca4b6b5f0206e7f58ed6a57c31a704f430b9eb8298894faf645cbb94d7a2", + "/registry/contracts/create/hash.json": "38d171fce1ca67a2de15cdd46b07fa6775ac2fd67721d644a8c5e34044681fbe", + "/registry/contracts/create/index.json": "0ce0322f1f5940b6cfed7cfb722f9b83a201af8d647c325f5e62f60811d0be9b", + "/registry/contracts/create/jinja.json": "2913da962958e368f34786dcd16f82d51620e69aedae6286375e28013bbd59ab", + "/registry/contracts/create/uuid.json": "5978f726cfcf4bc1793d1fa20b26db2c7c2430d5814acb2bfedb695efc3f4a84", + "/registry/contracts/date-calculator.json": "33b843fab46fb93819a8ead7e2493c7f216673004d697c64d8f42cf7980f3c16", + "/registry/contracts/drop.json": "0ae6507fd5db535214657abd4cb7a591532f4abf09603462d379364501716b38", + "/registry/contracts/explode.json": "d0232e1fc797333f78577c3ba07e21ea277b939bdc165bca5b52e8bde69c49d9", + "/registry/contracts/extract/address.json": "3e1f1c43c9e72e68a73f56e11a8b8271e972aefd0eb196c93170f4a7de459069", + "/registry/contracts/extract/ai.json": "5a0a4ac22f9ce9207e17c771a58dd00a78b97e4a59ce0ef92e395b6251fa4a66", + "/registry/contracts/extract/attributes.json": "7c97e215dad41c76c889c21a9b8d88f0adde8c5e61f1a3cbaa3b6364e8ca9b3a", + "/registry/contracts/extract/brackets.json": "18aaec76406f203e8df2d5a74228f1a27f45e0db0661ea52adc10e45325d60f7", + "/registry/contracts/extract/codes.json": "7f1daad07daa91e59e2baff56f98f26ffa5a7099387600fb115fa115a261e32f", + "/registry/contracts/extract/custom.json": "e3f5962c76510154872488d288a0a19e08bc1eb6643e60d7bc0a1755219ee563", + "/registry/contracts/extract/date-properties.json": "d97c2bf3131dbe7e0e69e48aa57d6e23f67fdcf387b21bd37e1704f54e93edc6", + "/registry/contracts/extract/date-range.json": "772a784954ff577fd1a21c8df04af829fe6c9abe2bac67f0fba3cdf385336533", + "/registry/contracts/extract/html.json": "7329a8b440631a0028ec8457138544fad3c6c576cc4bfdef7b3246039bf92667", + "/registry/contracts/extract/properties.json": "cc00e65f8c238704bf9b2deb3286195331836f0e36b3c622ad65e3920ea103ee", + "/registry/contracts/extract/regex.json": "0f65041cef5958d39f99e119d6f4706c5fafd5837e447a5a7bd7c45a4c3e2a14", + "/registry/contracts/filter.json": "a50cd19a332b715ec5a6219828395cee6cd65bebbbf13eb62c4d11ed5c2de9c8", + "/registry/contracts/format/dates.json": "85e7e6a71696bea16f00cce087dffb604434e27e885ae252fffa1b16f56388a0", + "/registry/contracts/format/pad.json": "576e5485a7f13bee276346f5aea690d578a4fdf8624c45e30fab20b59366e3da", + "/registry/contracts/format/prefix.json": "5a2920d279446c5e3363bc5045423bca35b6e92999fb24a71846484f80de817a", + "/registry/contracts/format/price-breaks.json": "c563daccef59cced0ba865e107717517c9d14bef9515751cdbba3dabbfcccac9", + "/registry/contracts/format/remove-duplicates.json": "e6767c13e6389da3d7c21ba6916fa57a691057a282aa2d496e37a83f3906cae4", + "/registry/contracts/format/significant-figures.json": "a092cbd31b97a7add09be06230be112e69648ab923333b11021e2028d830a832", + "/registry/contracts/format/suffix.json": "d54290bcb5affd21946d75a6eaad5513831fb4edb729f6674719f24006683221", + "/registry/contracts/format/trim.json": "0bbdbca9fd7e4ab9cb97d181fbc7cc521412ff744831039b55823f6917d97ac4", + "/registry/contracts/generate/ai.json": "868c7344111e00c3a05007778c8d672c0e6ce4782ed65cd121814819a5deff34", + "/registry/contracts/huggingface.json": "cf22df50a04a14c8ed73cce9b7a7135744cce3e3347e0765363f7c63ab4d20ea", + "/registry/contracts/log.json": "4d033efef40b6ebca07a479936081f902ebe8aa70c5b063f95e121f578b10a59", + "/registry/contracts/lookup.json": "c3615500784ed8e5ef0fd5a0227efd85b0fb9d57873c57346d4d89d0f6849e93", + "/registry/contracts/math.json": "add0ab1661a3261b1ad93c14d346e4d0374f870c4980546199fdd34c316bc93c", + "/registry/contracts/maths.json": "c565fffcb20947f5ecf865b6d56fd3da04dc5b820a1b0195388c82fa8b65a9a8", + "/registry/contracts/matrix.json": "fb5eaa1b1c8a55941c3ca977bb2284966e2d1db3f82885863ebd7e2d8d7a59f9", + "/registry/contracts/merge/coalesce.json": "38268afef81c384d635f7ecb6bdb5b37d681da19888779fb2f6d82491f770e4c", + "/registry/contracts/merge/concatenate.json": "56e5078eb761822d51b9b8f503ae1ae242aec3efe3539d55904645d4106fb410", + "/registry/contracts/merge/dictionaries.json": "18ef27b0ad6e76811681109815f838f43a9634897ab6c5977cff42fc8233fc2a", + "/registry/contracts/merge/key-value-pairs.json": "5ade2d2d545fa22d451f14a91a737becb09fd6e4b743fed9eb16408808942405", + "/registry/contracts/merge/lists.json": "c120090b52ceb91fcf66e4cc8cb1bd038bc2f422fdc64a69e13c38896fb18f1c", + "/registry/contracts/merge/to-dict.json": "54f39a00a4a32a10a98640b7997ba30f2e08129ff9f99d07fa83488df5132dfc", + "/registry/contracts/merge/to-list.json": "e10849329ffd1abcead6c9057bb9933ff73b9e8d7b5bf289236e067246d8f8af", + "/registry/contracts/python.json": "071528e72186d46301d7585d1e7139ec90ebb5bf4558d3d13370830cbd21ef96", + "/registry/contracts/recipe.json": "a963e76f407abe41e833a4abe5187aaf72ac9e4e417d85ade45a9f000b2a72ff", + "/registry/contracts/reindex.json": "1c9a995a3ae6b3b8f15b14d22099ebc7ab44cd1bda21b5b2e35e9d61a5e3670b", + "/registry/contracts/remove-words.json": "d24e44abfd67254a56d7858c657a4e5baf49661b7eca07f1331df1a983df0097", + "/registry/contracts/rename.json": "e6325740e088ef560ecd16468953a06d6271e82cacb0eaa69a45896927032adb", + "/registry/contracts/replace.json": "5f7aea2883fcc3dee73232589737dee2a9a48869f7f8273a8445d88ef4a7cc44", + "/registry/contracts/round.json": "85e5925e8dcfecd275ebd5c8bafa5e569e1437e883b0888078986ab3e1234ffe", + "/registry/contracts/search/find-links.json": "05e6f3b6d804937530d310f6c1a5f37609f0a54235686a0cb1c4f69fe672bc48", + "/registry/contracts/search/retrieve-link-content.json": "29baa54938511cefce15d6a221e43a42689132f03680422747b4d78ff120bfd3", + "/registry/contracts/select/columns.json": "1cc5574328115abd469a434612bb564582665ab8bc007d7f8792b67371524720", + "/registry/contracts/select/dictionary-element.json": "ed4ceed3f0f933c567e14c60a4bda2874a5a9e71fcac7f3ddc81931a6c3269c5", + "/registry/contracts/select/element.json": "09042fbe85c88f8e196093fe8893d352011cf5f4fe9e987502a48dffa990d367", + "/registry/contracts/select/group-by.json": "1b006c8c5deae42c1a95304a4ad53dc724d106173495d38453fdc5dabfa05789", + "/registry/contracts/select/head.json": "d35bd01196e108556faecc8446c4c671737f7d60a224f949a2cfe11593f0ddfa", + "/registry/contracts/select/highest-confidence.json": "a7bffefc43b2bcb5a5cbaf52fc671e5a9a28a3f8df3d0e66fca12a1c33f8d7f8", + "/registry/contracts/select/left.json": "e56cd0b5184ae69e157498d8149d2e22e2a2dc1f7445a62dc263aeab54716f19", + "/registry/contracts/select/length.json": "6824acff28a43ee3fcf53d2f04e9aa8a4ef5df1041828ae05e29c9f334602ebd", + "/registry/contracts/select/list-element.json": "b3b22be13a63863f94dc6d200e31d38ae836c62385458d2d7841e373a55f2821", + "/registry/contracts/select/right.json": "be9caefda4116654841969b0df6c4b696070ebd13f03c3ecd22ffccfbbed6703", + "/registry/contracts/select/sample.json": "b16b4c7a9266f931c732d3b1db7a733a353089435645ca30188310d52a64f162", + "/registry/contracts/select/substring.json": "221b3b4a44b61337166197a04375e879b9ac0710655d7b4a1f44812cbfbbf1d2", + "/registry/contracts/select/tail.json": "0290702339d7c907a26d3eba451f19c0172dc1f616bd1bc5eb51a3753751108f", + "/registry/contracts/select/threshold.json": "a81cd01557a2fbf7f6b656fd9e8fa43e61a2ea44d09524a17225df0b5a598193", + "/registry/contracts/similarity.json": "bf0728dcb0b3ecf5606b31abddce8f07952bda28ce8c987c71a28c591be0e6b3", + "/registry/contracts/sort.json": "250a7c27fa65378a353e7f655ad8a10cfc720d431a97bf04f976285a40f32333", + "/registry/contracts/split/dictionary.json": "b61ee1bffa6e358b1d4f70a38746358220c4f4462cf62ffd81a47bb9558ef3b0", + "/registry/contracts/split/list.json": "9fc38ffc06f12fc1ad4902d1c5ef25b372b2c4b40c31e9cec1041491e2df8797", + "/registry/contracts/split/text.json": "3d811ed113f92feb07f44ea32da4a31cf5e0d87fd876097fce62584732ae2494", + "/registry/contracts/split/tokenize.json": "858ffd16a03b2409790b16160c13de5a552475e70cd71a7e2ad9785a75f83259", + "/registry/contracts/sql.json": "300456537940ee08bc4a7b768274c2c1f39b68861488b14ad9e68cac717b87b6", + "/registry/contracts/standardize.json": "7544c69ccd3531a13551b51c5cb770f5b3764f8d06c563e4999aa8c8061cc45e", + "/registry/contracts/standardize/clean.json": "3dc6b21a430fec74de9fc53fca1f8966c61e5af446e52fe7fef3d650497438da", + "/registry/contracts/standardize/custom.json": "6141ef62f7483d52787ae2d41e3fcbce1fdb591af6d6fa84a06a95beff1ca5ec", + "/registry/contracts/translate.json": "e25fe8d6272204d2e5cffc2431d118f333307bc55d32bce27652bd70875c0ecc", + "/registry/contracts/transpose.json": "f82746bbca569b3b18334ed8f05b7c4ea192a436cad12cb1f0ce376dd0d988a2", + "/registry/contracts/try.json": "981b816f2a23fe17366141ffa1fbda36ab92ab8a5917b26ebf1d979cb6adac86", + "/registry/runtime/reconciliation.json": "60c17a844502b6e352f704719464917d119fdb91c9912b5c1ba9fb268b3eae0c", "/registry/runtime/wranglespy.json": "f06526b3823fb70f1bb28f4be242bf23621d1b5a544d1f42c04b7549fe1bbef0", - "/registry/schema/wrangle-contract.schema.json": "78712d241d35dad90525da0a0a9e84e939a9acb6f5eaaff5e26d7617819cafff", - "/registry/schema/wrangle-entry.schema.json": "edfcb522624d469a5e6565fec07ba151f24d3a3ebfe1888826b189977cadfb3e", + "/registry/schema/wrangle-contract.schema.json": "48c3ed261fc5046df85cedc76ef549b720e94a75b828706c2faaf87f54b8eea3", + "/registry/schema/wrangle-entry.schema.json": "42f0aeae27e96144b7aa83d9623e262171b3f2cb91e4cd8ee6e75da66b28460b", "/registry/schema/wrangles-runtime-manifest.schema.json": "fc05d2e44272311d3875421c5ae9b978185fcc05770d330cc4cd5bd261ec7538", - "/schemas/recipes/registry/recipe-writer.schema.json": "d8fd259ba2fac003a6a965b7113c13b301deb3c00a90825a6e8e648c0b386f92", - "/schemas/recipes/registry/schema.json": "135d01a7ae465cda309e9c07c3259a1c65a1e04ae057d7e54d6f60e3732c5322" + "/schemas/recipes/registry/recipe-writer.schema.json": "02de487d6e8eade0424b23a484bd0b1301871faf1974defae4b9970720e0eb74", + "/schemas/recipes/registry/schema.json": "72e4a09c3e713227c4410099fbf26dfbe351467455187cfa506e7e5bfb786ff3" } }, "bundle_checksum": { "algorithm": "sha256", "framing": "utf8-path-null-content-null-v1", - "value": "ccf8cf048d7440b6a30b24d6a31bcde6718b763519a819086146144f0fde81b7", + "value": "bd1e20a259cc254173d9dfd45abdfdf588b851ba0bd969c12d3d3802e3b22513", "member_count": 105, "manifest_included": false } diff --git a/wrangles-docs/static/registry/runtime/reconciliation.json b/wrangles-docs/static/registry/runtime/reconciliation.json index 9572611..b65467f 100644 --- a/wrangles-docs/static/registry/runtime/reconciliation.json +++ b/wrangles-docs/static/registry/runtime/reconciliation.json @@ -1,6 +1,6 @@ { "format": "wrangles-runtime-reconciliation-summary", - "registry_version": "0.2.0", + "registry_version": "0.2.1", "runtime_source": { "repository": "https://github.com/wrangleworks/WranglesPY", "version": "1.20.2", diff --git a/wrangles-docs/static/registry/schema/wrangle-contract.schema.json b/wrangles-docs/static/registry/schema/wrangle-contract.schema.json index 083459a..b5cc11a 100644 --- a/wrangles-docs/static/registry/schema/wrangle-contract.schema.json +++ b/wrangles-docs/static/registry/schema/wrangle-contract.schema.json @@ -39,7 +39,7 @@ "const": "wrangles-registry-entry" }, "registry_version": { - "const": "0.2.0" + "const": "0.2.1" }, "schema_version": { "const": "0.2" @@ -281,6 +281,9 @@ "Details" ] }, + "column_semantics": { + "$ref": "#/$defs/column_semantics" + }, "runtime_default": {}, "schema": { "type": "object", @@ -288,6 +291,31 @@ } } }, + "column_semantics": { + "type": "object", + "additionalProperties": false, + "required": [ + "role", + "cardinality" + ], + "properties": { + "role": { + "enum": [ + "reference", + "destination" + ], + "description": "Whether the parameter selects columns that exist before the step or names columns where the step writes results." + }, + "cardinality": { + "enum": [ + "scalar", + "list", + "scalar_or_list" + ], + "description": "Whether the parameter accepts one direct string/integer column identifier, an array whose direct items are string/integer identifiers, or either shape. Nullability is defined separately by the parameter schema; object and mapping-key locations require a future locator vocabulary." + } + } + }, "example": { "type": "object", "additionalProperties": false, diff --git a/wrangles-docs/static/registry/schema/wrangle-entry.schema.json b/wrangles-docs/static/registry/schema/wrangle-entry.schema.json index 01821af..f81fa57 100644 --- a/wrangles-docs/static/registry/schema/wrangle-entry.schema.json +++ b/wrangles-docs/static/registry/schema/wrangle-entry.schema.json @@ -283,6 +283,9 @@ "Details" ] }, + "column_semantics": { + "$ref": "#/$defs/column_semantics" + }, "runtime_default": {}, "schema": { "type": "object", @@ -290,6 +293,31 @@ } } }, + "column_semantics": { + "type": "object", + "additionalProperties": false, + "required": [ + "role", + "cardinality" + ], + "properties": { + "role": { + "enum": [ + "reference", + "destination" + ], + "description": "Whether the parameter selects columns that exist before the step or names columns where the step writes results." + }, + "cardinality": { + "enum": [ + "scalar", + "list", + "scalar_or_list" + ], + "description": "Whether the parameter accepts one direct string/integer column identifier, an array whose direct items are string/integer identifiers, or either shape. Nullability is defined separately by the parameter schema; object and mapping-key locations require a future locator vocabulary." + } + } + }, "example": { "type": "object", "additionalProperties": false, diff --git a/wrangles-docs/static/registry/wrangles/_root/drop.md b/wrangles-docs/static/registry/wrangles/_root/drop.md index 7435a7e..9c5c190 100644 --- a/wrangles-docs/static/registry/wrangles/_root/drop.md +++ b/wrangles-docs/static/registry/wrangles/_root/drop.md @@ -34,10 +34,15 @@ parameters: description: Name of the column(s) to drop. required: true param_group: I/O + column_semantics: + role: reference + cardinality: scalar_or_list schema: type: - string - array + items: + type: string examples: [] sources: - id: runtime diff --git a/wrangles-docs/static/registry/wrangles/_root/rename.md b/wrangles-docs/static/registry/wrangles/_root/rename.md index 2dee332..e90e42e 100644 --- a/wrangles-docs/static/registry/wrangles/_root/rename.md +++ b/wrangles-docs/static/registry/wrangles/_root/rename.md @@ -35,6 +35,9 @@ parameters: description: Name or list of input columns. required: false param_group: I/O + column_semantics: + role: reference + cardinality: scalar_or_list runtime_default: null schema: type: @@ -42,16 +45,25 @@ parameters: - integer - array - 'null' + items: + type: + - string + - integer - name: output description: Name or list of output columns. required: false param_group: I/O + column_semantics: + role: destination + cardinality: scalar_or_list runtime_default: null schema: type: - string - array - 'null' + items: + type: string - name: wrangles description: >- Use wrangles to transform the column names. The input is named 'columns' and the final result diff --git a/wrangles-docs/static/registry/wrangles/extract/date-range.md b/wrangles-docs/static/registry/wrangles/extract/date-range.md index 7a4d4f3..ee36c9d 100644 --- a/wrangles-docs/static/registry/wrangles/extract/date-range.md +++ b/wrangles-docs/static/registry/wrangles/extract/date-range.md @@ -34,18 +34,27 @@ parameters: description: Name of the start date column. required: true param_group: I/O + column_semantics: + role: reference + cardinality: scalar schema: type: string - name: end_time description: Name of the end date column. required: true param_group: I/O + column_semantics: + role: reference + cardinality: scalar schema: type: string - name: output description: Name of the output column. required: true param_group: I/O + column_semantics: + role: destination + cardinality: scalar schema: type: string - name: range diff --git a/wrangles-docs/static/registry/wrangles/standardize/clean.md b/wrangles-docs/static/registry/wrangles/standardize/clean.md index fced91a..1eb6053 100644 --- a/wrangles-docs/static/registry/wrangles/standardize/clean.md +++ b/wrangles-docs/static/registry/wrangles/standardize/clean.md @@ -36,15 +36,25 @@ parameters: description: Name or list of input columns. required: true param_group: I/O + column_semantics: + role: reference + cardinality: scalar_or_list schema: type: - string - integer - array + items: + type: + - string + - integer - name: output description: Name or list of output columns. Defaults to overwriting input. required: false param_group: I/O + column_semantics: + role: destination + cardinality: scalar_or_list runtime_default: null schema: type: @@ -52,6 +62,10 @@ parameters: - integer - array - 'null' + items: + type: + - string + - integer - name: fix_encoding description: Repair mojibake and other reversible encoding errors. required: false diff --git a/wrangles-docs/static/schemas/recipes/registry/recipe-writer.schema.json b/wrangles-docs/static/schemas/recipes/registry/recipe-writer.schema.json index 57459a4..8865ad8 100644 --- a/wrangles-docs/static/schemas/recipes/registry/recipe-writer.schema.json +++ b/wrangles-docs/static/schemas/recipes/registry/recipe-writer.schema.json @@ -1516,7 +1516,14 @@ "string", "array" ], - "description": "Name of the column(s) to drop." + "items": { + "type": "string" + }, + "description": "Name of the column(s) to drop.", + "x-wrangles-column": { + "role": "reference", + "cardinality": "scalar_or_list" + } }, "if": { "type": "string", @@ -2440,15 +2447,27 @@ "properties": { "start_time": { "type": "string", - "description": "Name of the start date column." + "description": "Name of the start date column.", + "x-wrangles-column": { + "role": "reference", + "cardinality": "scalar" + } }, "end_time": { "type": "string", - "description": "Name of the end date column." + "description": "Name of the end date column.", + "x-wrangles-column": { + "role": "reference", + "cardinality": "scalar" + } }, "output": { "type": "string", - "description": "Name of the output column." + "description": "Name of the output column.", + "x-wrangles-column": { + "role": "destination", + "cardinality": "scalar" + } }, "range": { "type": "string", @@ -5315,7 +5334,17 @@ "integer", "array" ], - "description": "Name or list of input columns." + "items": { + "type": [ + "string", + "integer" + ] + }, + "description": "Name or list of input columns.", + "x-wrangles-column": { + "role": "reference", + "cardinality": "scalar_or_list" + } }, "output": { "type": [ @@ -5324,7 +5353,17 @@ "array", "null" ], + "items": { + "type": [ + "string", + "integer" + ] + }, "description": "Name or list of output columns. Defaults to overwriting input.", + "x-wrangles-column": { + "role": "destination", + "cardinality": "scalar_or_list" + }, "default": null }, "fix_encoding": { diff --git a/wrangles-docs/static/schemas/recipes/registry/schema.json b/wrangles-docs/static/schemas/recipes/registry/schema.json index 741e2c6..65fcbeb 100644 --- a/wrangles-docs/static/schemas/recipes/registry/schema.json +++ b/wrangles-docs/static/schemas/recipes/registry/schema.json @@ -1628,7 +1628,14 @@ "string", "array" ], - "description": "Name of the column(s) to drop." + "items": { + "type": "string" + }, + "description": "Name of the column(s) to drop.", + "x-wrangles-column": { + "role": "reference", + "cardinality": "scalar_or_list" + } }, "if": { "type": "string", @@ -2552,15 +2559,27 @@ "properties": { "start_time": { "type": "string", - "description": "Name of the start date column." + "description": "Name of the start date column.", + "x-wrangles-column": { + "role": "reference", + "cardinality": "scalar" + } }, "end_time": { "type": "string", - "description": "Name of the end date column." + "description": "Name of the end date column.", + "x-wrangles-column": { + "role": "reference", + "cardinality": "scalar" + } }, "output": { "type": "string", - "description": "Name of the output column." + "description": "Name of the output column.", + "x-wrangles-column": { + "role": "destination", + "cardinality": "scalar" + } }, "range": { "type": "string", @@ -4311,7 +4330,17 @@ "array", "null" ], + "items": { + "type": [ + "string", + "integer" + ] + }, "description": "Name or list of input columns.", + "x-wrangles-column": { + "role": "reference", + "cardinality": "scalar_or_list" + }, "default": null }, "output": { @@ -4320,7 +4349,14 @@ "array", "null" ], + "items": { + "type": "string" + }, "description": "Name or list of output columns.", + "x-wrangles-column": { + "role": "destination", + "cardinality": "scalar_or_list" + }, "default": null }, "wrangles": { @@ -5771,7 +5807,17 @@ "integer", "array" ], - "description": "Name or list of input columns." + "items": { + "type": [ + "string", + "integer" + ] + }, + "description": "Name or list of input columns.", + "x-wrangles-column": { + "role": "reference", + "cardinality": "scalar_or_list" + } }, "output": { "type": [ @@ -5780,7 +5826,17 @@ "array", "null" ], + "items": { + "type": [ + "string", + "integer" + ] + }, "description": "Name or list of output columns. Defaults to overwriting input.", + "x-wrangles-column": { + "role": "destination", + "cardinality": "scalar_or_list" + }, "default": null }, "fix_encoding": {