Extending - cihai.extend¶
Cihai Plugin System.
Status: Experimental, API can change
As a pilot, the UNIHAN library, and an plugin for it, in #131 [1]_
You can bring any data layout / backend you like to cihai.
For convenience, you can use cihai’s configuration namespace and SQLAlchemy settings.
You can also create plugins which extend another. So if Unihan doesn’t have a lookup for variant glyphs, this can be added.
- class cihai.extend.ConfigMixin[source]¶
Bases:
objectCihai configuration context.
This piggybacks cihai’s global config state, as well as your datasets.
Cihai will automatically manage the user’s config, as well as your datasets, neatly in XDG.
- Raises:
Functions inside, and what you write relating to dataset config should return –
CihaiDatasetConfigException (CihaiDatasetException) –
config.cihai = links directly back to Cihai's configuration dictionary –
(todo note – make this non-mutable property):
:raises config : dict: your local user’s config :raises check() : function, optional: this is ran on start. it can raise DatasetConfigException :raises default_config : your dataset’s default configuration: :raises get_default_config : override function in case you’d like custom configs (for: instance if you want a platform to use a different db driver, or do version checks, etc.) internal functions use get_default_config()
- class cihai.extend.SQLAlchemyMixin[source]¶
Bases:
objectCihai RDBMS backend functionality using SQLAlchemy.
Your dataset can use any backend you’d like, we provide a backend for you, that automatically piggybacks on cihai’s zero-config, XDG / SQLAchemy configuration. So it’s preconfigured for the user.
In addition, this mixin gives you access to any other of the user’s sqlalchemy sql that use this mixin. So if you want a dataset that utilizes UNIHAN, you can access that easily.
This will provide the following instance-level properties in methods:
When you have access, it’s expected to keep your tables / databases namespaced so they don’t clobber.
- sql: Database¶
- engine: Engine¶
sqlalchemy.engine.Engineinstance.
- metadata: MetaData¶
sqlalchemy.schema.MetaDatainstance.
- session: Session¶
sqlalchemy.orm.session.Sessioninstance.
- base: AutomapBase¶
sqlalchemy.ext.automap.AutomapBaseinstance.
- class cihai.extend.Dataset[source]¶
Bases:
objectCihai dataset, e.g. UNIHAN.
See also
cihai.data.unihan.dataset.Unihanreference implementation
- class cihai.extend.DatasetPlugin[source]¶
Bases:
objectExtend the functionality of datasets with custom methods, actions, etc.
See also
cihai.data.unihan.dataset.UnihanVariantsreference implementation