kopia lustrzana https://github.com/simonw/datasette
Allow custom units to be registered with Pint
rodzic
ab85605c61
commit
3c985ec271
|
@ -1186,6 +1186,11 @@ class Datasette:
|
|||
}
|
||||
return self._inspect
|
||||
|
||||
def register_custom_units(self):
|
||||
"Register any custom units defined in the metadata.json with Pint"
|
||||
for unit in self.metadata.get('custom_units', []):
|
||||
ureg.define(unit)
|
||||
|
||||
def app(self):
|
||||
app = Sanic(__name__)
|
||||
default_templates = str(app_root / 'datasette' / 'templates')
|
||||
|
@ -1230,6 +1235,8 @@ class Datasette:
|
|||
'/<db_name:[^/]+>/<table:[^/]+?>/<pk_path:[^/]+?><as_json:(\.jsono?)?$>'
|
||||
)
|
||||
|
||||
self.register_custom_units()
|
||||
|
||||
@app.exception(Exception)
|
||||
def on_exception(request, exception):
|
||||
title = None
|
||||
|
|
|
@ -79,7 +79,14 @@ Column units are configured in the metadata like so::
|
|||
}
|
||||
|
||||
Units are interpreted using Pint_, and you can see the full list of available units in
|
||||
Pint's `unit registry`_.
|
||||
Pint's `unit registry`_. You can also add custom units to the metadata, which will be
|
||||
registered with Pint::
|
||||
|
||||
{
|
||||
"custom_units": [
|
||||
"decibel = [] = dB"
|
||||
]
|
||||
}
|
||||
|
||||
.. _Pint: https://pint.readthedocs.io/
|
||||
.. _unit registry: https://github.com/hgrecco/pint/blob/master/pint/default_en.txt
|
||||
|
|
Ładowanie…
Reference in New Issue