datasette/tests
Claude 73225ccad0
Add column types system for semantic column annotations
Implements the column types feature that lets Datasette and plugins annotate
columns with semantic types beyond SQLite storage types (e.g. markdown, email,
url, json, file, point). This enables type-appropriate rendering, validation,
form widgets, and API behavior.

Key changes:
- New `column_types` internal DB table for storing assignments
- `ColumnType` dataclass in datasette/column_types.py with render_cell,
  validate, and transform_value methods
- `register_column_types` plugin hook for registering types
- Built-in url, email, and json column types
- Datasette API methods: get/set/remove_column_type(s),
  get_column_type_class
- Config loading from datasette.json `column_types` table config key
- `column_types` extra on the table JSON endpoint
- Column type info in display_columns extra
- Column type render_cell gets priority in rendering pipeline
- column_type/column_type_config args added to render_cell hookspec
- Write-path validation on insert and update

https://claude.ai/code/session_01SvPEPqHgURTWESRp28pTC3
2026-03-17 02:40:37 +00:00
..
plugins Fix startup hook to fire after metadata and schema tables are populated (#2666) 2026-03-16 17:56:40 -07:00
test_templates Fix handling of nested custom page wildcard paths, closes #996 2020-10-07 15:51:11 -07:00
__init__.py Broke up test_app into test_api and test_html 2017-12-15 04:08:24 -08:00
build_small_spatialite_db.py New run_sanity_checks mechanism, for SpatiLite 2019-05-11 15:55:30 -07:00
conftest.py Black formatting 2026-02-17 13:30:24 -08:00
ext.c Add new entrypoint option to --load-extensions. (#1789) 2022-08-23 11:34:30 -07:00
fixtures.py register_token_handler() plugin hook for custom API token backends (#2650) 2026-02-25 16:32:45 -08:00
spatialite.db New run_sanity_checks mechanism, for SpatiLite 2019-05-11 15:55:30 -07:00
test-datasette-load-plugins.sh fix (typo): Corrected spelling of 'environments' (#2268) 2024-02-19 14:41:32 -08:00
test_actions_sql.py datasette.pm property, closes #2595 2025-11-13 10:31:03 -08:00
test_actor_restriction_bug.py New PermissionSQL.restriction_sql mechanism for actor restrictions 2025-11-03 14:17:51 -08:00
test_allowed_resources.py Switch to ruff and fix all lint errors, refs #2630 2026-01-23 20:43:16 -08:00
test_api.py Fix test assertions broken by new fixture rows in 170f9de 2026-02-17 13:22:57 -08:00
test_api_write.py register_token_handler() plugin hook for custom API token backends (#2650) 2026-02-25 16:32:45 -08:00
test_auth.py Fix type annotation bugs and remove unused imports 2025-10-26 16:03:13 -07:00
test_base_view.py New View base class (#2080) 2023-05-25 17:18:43 -07:00
test_canned_queries.py Fix type annotation bugs and remove unused imports 2025-10-26 16:03:13 -07:00
test_cli.py Black formatting 2026-02-17 13:30:24 -08:00
test_cli_serve_get.py Black formatting 2026-02-17 13:30:24 -08:00
test_cli_serve_server.py Move HTTPS test to a bash script 2022-12-17 18:33:07 -08:00
test_column_types.py Add column types system for semantic column annotations 2026-03-17 02:40:37 +00:00
test_config_dir.py Black formatting 2026-02-17 13:30:24 -08:00
test_config_permission_rules.py Run black formatter 2025-10-25 15:38:07 -07:00
test_crossdb.py Switch to ruff and fix all lint errors, refs #2630 2026-01-23 20:43:16 -08:00
test_csv.py Black formatting 2026-02-17 13:30:24 -08:00
test_custom_pages.py Move open redirect fix to asgi_send_redirect, refs #2429 2025-11-04 17:08:06 -08:00
test_datasette_https_server.sh Detect server start/stop more reliably. 2022-12-18 08:01:51 -08:00
test_default_deny.py datasette serve --default-deny option (#2593) 2025-11-12 16:14:21 -08:00
test_docs.py Use subtests in tests/test_docs.py (#2609) 2025-12-04 21:36:39 -08:00
test_docs_plugins.py datasette.pm property, closes #2595 2025-11-13 10:31:03 -08:00
test_facets.py Respect metadata-defined facet ordering in sorted_facet_results (#2648) 2026-02-25 16:33:27 -08:00
test_filters.py Switch to ruff and fix all lint errors, refs #2630 2026-01-23 20:43:16 -08:00
test_html.py UI for selecting and re-ordering columns on the table page (#2662) 2026-03-09 17:45:24 -07:00
test_internal_db.py Fix for stale internal database bug, closes #2605 2025-12-02 16:22:42 -08:00
test_internals_database.py Black formatting 2026-02-17 13:30:24 -08:00
test_internals_datasette.py Switch to ruff and fix all lint errors, refs #2630 2026-01-23 20:43:16 -08:00
test_internals_datasette_client.py datasette.pm property, closes #2595 2025-11-13 10:31:03 -08:00
test_internals_request.py Request.fake(... url_vars), plus .fake() is now documented 2022-03-31 19:01:58 -07:00
test_internals_response.py response.set_cookie(), closes #795 2020-06-09 15:19:37 -07:00
test_internals_urls.py Remove hashed URL mode 2022-03-18 17:12:03 -07:00
test_label_column_for_table.py Detect single unique text column in label_column_for_table, closes #2458 2025-02-01 17:02:49 -08:00
test_load_extensions.py Introduce new /$DB/-/query endpoint, soft replaces /$DB?sql=... (#2363) 2024-07-15 10:33:51 -07:00
test_messages.py Introduce new /$DB/-/query endpoint, soft replaces /$DB?sql=... (#2363) 2024-07-15 10:33:51 -07:00
test_multipart.py Add request.form() for multipart form data and file uploads 2026-01-28 18:41:03 -08:00
test_package.py Upgrade Docker images to Python 3.11, closes #1853 2022-10-25 12:04:53 -07:00
test_permission_endpoints.py datasette.pm property, closes #2595 2025-11-13 10:31:03 -08:00
test_permissions.py register_token_handler() plugin hook for custom API token backends (#2650) 2026-02-25 16:32:45 -08:00
test_plugins.py Add column types system for semantic column annotations 2026-03-17 02:40:37 +00:00
test_publish_cloudrun.py Black formatting 2026-02-17 13:30:24 -08:00
test_publish_heroku.py Upgrade to Python 3.11 on Heroku, refs #1905 2022-11-18 16:44:46 -08:00
test_restriction_sql.py Switch to ruff and fix all lint errors, refs #2630 2026-01-23 20:43:16 -08:00
test_routes.py Black formatting 2026-02-17 13:30:24 -08:00
test_schema_endpoints.py Switch to ruff and fix all lint errors, refs #2630 2026-01-23 20:43:16 -08:00
test_search_tables.py Rename test_tables_endpoint.py and remove outdated tests 2025-10-25 17:32:48 -07:00
test_spatialite.py Skip SpatiaLite test if no conn.enable_load_extension() 2022-09-05 17:09:57 -07:00
test_table_api.py Black formatting 2026-02-17 13:30:24 -08:00
test_table_html.py UI for selecting and re-ordering columns on the table page (#2662) 2026-03-09 17:45:24 -07:00
test_token_handler.py register_token_handler() plugin hook for custom API token backends (#2650) 2026-02-25 16:32:45 -08:00
test_tracer.py Fix startup hook to fire after metadata and schema tables are populated (#2666) 2026-03-16 17:56:40 -07:00
test_utils.py Black formatting 2026-02-17 13:30:24 -08:00
test_utils_check_callable.py Rename callable.py to check_callable.py, refs #2078 2023-05-25 11:49:40 -07:00
test_utils_permissions.py Black formatting 2026-02-17 13:30:24 -08:00
test_write_wrapper.py Fix test_write_wrapper_set_authorizer: use permissive callback instead of None 2026-02-17 13:30:46 -08:00
utils.py Test improvements and fixed deprecation warnings (#2464) 2025-02-04 14:49:52 -08:00