{"record":{"id":"1134a1366b61f784","repo":"pathwaycom/pathway","slug":"schemaregistrysettings-urls-must-be-a-list-of-stri","errorCode":null,"errorMessage":"SchemaRegistrySettings.urls must be a list of strings, got {type(self.urls).__name__}. Wrap a single URL in a list: urls=['http://...'].","messagePattern":"SchemaRegistrySettings\\.urls must be a list of strings, got (.+?)\\. Wrap a single URL in a list: urls=\\['http://\\.\\.\\.'\\]\\.","errorType":"validation","errorClass":"TypeError","httpStatus":null,"severity":"error","filePath":"python/pathway/internals/_io_helpers.py","lineNumber":274,"sourceCode":"        headers: Additional headers to include in HTTP requests to the schema registry.\n        proxy: Proxy address for registry requests.\n        timeout: Timeout duration for network requests, in seconds.\n\n    Returns:\n        The configuration object.\n    \"\"\"\n\n    urls: list[str]\n    token_authorization: str | None = None\n    username: str | None = None\n    password: str | None = None\n    headers: list[SchemaRegistryHeader] | None = None\n    proxy: str | None = None\n    timeout: datetime.timedelta | None = None\n\n    def __post_init__(self):\n        if not isinstance(self.urls, (list, tuple)):\n            raise TypeError(\n                f\"SchemaRegistrySettings.urls must be a list of strings, \"\n                f\"got {type(self.urls).__name__}. Wrap a single URL in a \"\n                f\"list: urls=['http://...'].\"\n            )\n        if not self.urls:\n            raise ValueError(\n                \"SchemaRegistrySettings requires at least one entry in 'urls'; \"\n                \"got an empty list.\"\n            )\n        for i, url in enumerate(self.urls):\n            if not isinstance(url, str) or not url:\n                raise ValueError(\n                    f\"SchemaRegistrySettings.urls[{i}] must be a non-empty \"\n                    f\"string; got {url!r}.\"\n                )\n        for field_name in (\"token_authorization\", \"username\", \"password\", \"proxy\"):\n            value = getattr(self, field_name)\n            if value is not None and not isinstance(value, str):","sourceCodeStart":256,"sourceCodeEnd":292,"githubUrl":"https://github.com/pathwaycom/pathway/blob/fa2f74a4649b7c5908690cf60137263d8d80de5f/python/pathway/internals/_io_helpers.py#L256-L292","documentation":"pw.io.deltalake.write accepts partition_columns as ColumnReference objects and verifies each one belongs to the table being written before converting to column names; partitioning is table-scoped so a foreign reference is invalid.","triggerScenarios":"Passing partition_columns=[other_table.event_date] where other_table is not the table argument of pw.io.deltalake.write.","commonSituations":"Pipeline transforms a table (t = raw.with_columns(...)) but partition_columns still references the original raw table's column; multiple derived tables make it easy to grab the wrong reference.","solutions":["Reference columns from the table being written: partition_columns=[t.event_date].","If the partition key must be computed, add it to the table first (with_columns) and pass the new column."],"exampleFix":"# before\nenriched = raw.with_columns(day=pw.this.ts.dt())\npw.io.deltalake.write(enriched, uri, partition_columns=[raw.day])\n\n# after\nenriched = raw.with_columns(day=pw.this.ts.dt())\npw.io.deltalake.write(enriched, uri, partition_columns=[enriched.day])","handlingStrategy":"validation","validationCode":"for c in partition_columns or []:\n    assert c._table is table, f\"partition column {c._name!r} not from target table\"\npw.io.deltalake.write(table, uri, partition_columns=partition_columns)","typeGuard":"def columns_from_table(columns: list, table: pw.Table) -> bool:\n    return all(c._table is table for c in columns)","tryCatchPattern":null,"preventionTips":["Pass partition_columns inline as table.column references at the call site.","After table transformations, rebuild the partition list from the final table variable."],"tags":["pathway","deltalake","partitioning","column-reference","validation"],"backgroundTag":null,"analyzedSha":"fa2f74a4649b7c5908690cf60137263d8d80de5f","analyzedAt":"2026-08-15T01:48:17.006Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}