datasette/docs/index.rst
Alex Garcia f28db54eda Add a plugin telemetry kit: public registry API, linked_root_span_kwargs, test helpers, docs
A survey of five plugin OTel plans (datasette-paper, -agent, -litestream,
-accounts, -cron) found every one hand-copying the same core machinery:
the registry classes, the conformance-test harness, the pytest fixtures,
the bucket boundaries and the detached-root-with-Link recipe. This makes
that machinery importable instead:

- The registry classes are documented public API. Attribute gains
  values= (a closed enum the conformance helpers enforce - what makes an
  attribute safe as a metric dimension); SpanName gains prefix=True for
  span families like "chat {model}" whose names share a fixed prefix,
  matched by span_for() after exact names. span_for()/attribute helpers
  accept a spans= tuple so plugin registries can use them.
- datasette.telemetry.linked_root_span_kwargs(): the root-span-with-Link
  shape for work a request caused without containing - background jobs,
  scheduled ticks, block=False writes. Core's own write thread now uses
  it instead of building the kwargs inline.
- datasette.telemetry_testing: the session provider fixtures, otel_spans
  / otel_metrics, a two-way registry conformance checker (including enum
  and prefix handling, filtered by instrumentation scope) and an
  assert_package_never_imports_sdk() guard. Core's conftest now imports
  these instead of defining them, so the suite consumes the kit exactly
  as a plugin's would.
- New "Telemetry for plugin authors" docs page: scope discipline,
  registry usage, privacy/cardinality rules, named-callable guidance,
  request_span(), the background root-with-link convention (one root per
  tick, always emitted), provider-ordering facts and known caveats.
  request_span() is now documented public API.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012U7coQfVu8nK2R4q2mCULA
2026-09-02 14:21:14 -07:00

72 lines
2.5 KiB
ReStructuredText

Datasette
=========
|PyPI| |Changelog| |Python 3.x| |Tests| |License| |docker:
datasette| |discord|
.. |PyPI| image:: https://img.shields.io/pypi/v/datasette.svg
:target: https://pypi.org/project/datasette/
.. |Changelog| image:: https://img.shields.io/github/v/release/simonw/datasette?label=changelog
:target: https://docs.datasette.io/en/stable/changelog.html
.. |Python 3.x| image:: https://img.shields.io/pypi/pyversions/datasette.svg?logo=python&logoColor=white
:target: https://pypi.org/project/datasette/
.. |Tests| image:: https://github.com/simonw/datasette/workflows/Test/badge.svg
:target: https://github.com/simonw/datasette/actions?query=workflow%3ATest
.. |License| image:: https://img.shields.io/badge/license-Apache%202.0-blue.svg
:target: https://github.com/simonw/datasette/blob/main/LICENSE
.. |docker: datasette| image:: https://img.shields.io/badge/docker-datasette-blue
:target: https://hub.docker.com/r/datasetteproject/datasette
.. |discord| image:: https://img.shields.io/discord/823971286308356157?label=discord
:target: https://datasette.io/discord
*An open source multi-tool for exploring and publishing data*
Datasette is a tool for exploring and publishing data. It helps people take data of any shape or size and publish that as an interactive, explorable website and accompanying API.
Datasette is aimed at data journalists, museum curators, archivists, local governments and anyone else who has data that they wish to share with the world. It is part of a :ref:`wider ecosystem of tools and plugins <ecosystem>` dedicated to making working with structured data as productive as possible.
`Explore a demo <https://fivethirtyeight.datasettes.com/fivethirtyeight>`__, watch `a presentation about the project <https://static.simonwillison.net/static/2018/pybay-datasette/>`__.
Interested in learning Datasette? Start with `the official tutorials <https://datasette.io/tutorials>`__.
Support questions, feedback? Join the `Datasette Discord <https://datasette.io/discord>`__.
Contents
--------
.. toctree::
:maxdepth: 3
getting_started
installation
configuration
ecosystem
cli-reference
pages
publish
deploying
json_api
sql_queries
authentication
performance
csv_export
binary_data
facets
full_text_search
spatialite
metadata
settings
introspection
custom_templates
template_context
plugins
writing_plugins
javascript_plugins
plugin_hooks
testing_plugins
plugin_telemetry
internals
events
upgrade_guide
contributing
changelog