{
  "name": "cihai",
  "url": "https://cihai.git-pull.com",
  "description": "Python library for CJK (Chinese, Japanese, Korean) character data. Look up readings, definitions, and variants from the UNIHAN database and beyond.",
  "sourceRepository": "https://github.com/cihai/cihai/",
  "agentEntrypoints": {
    "manifest": "/docs.json",
    "llms": "/llms.txt",
    "llmsFull": "/llms-full.txt"
  },
  "pages": [
    {
      "title": "Config - cihai.config",
      "description": "Configuration options for Cihai app.",
      "section": "Documentation",
      "url": "/api/config/",
      "markdownUrl": "/api/config.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Config - cihai.config"
        },
        {
          "id": "cihai.config.expand_config",
          "level": 2,
          "text": "expand_config()"
        }
      ]
    },
    {
      "title": "Constants - cihai.constants",
      "description": "Constants for cihai.",
      "section": "Documentation",
      "url": "/api/constants/",
      "markdownUrl": "/api/constants.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Constants - cihai.constants"
        },
        {
          "id": "cihai.constants.app_dirs",
          "level": 2,
          "text": "app_dirs"
        },
        {
          "id": "cihai.constants.DEFAULT_CONFIG",
          "level": 2,
          "text": "DEFAULT_CONFIG"
        },
        {
          "id": "cihai.constants.UNIHAN_CONFIG",
          "level": 2,
          "text": "UNIHAN_CONFIG"
        }
      ]
    },
    {
      "title": "Conversion - cihai.conversion",
      "description": "Conversion functions for various CJK encodings and representations.",
      "section": "Documentation",
      "url": "/api/conversion/",
      "markdownUrl": "/api/conversion.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Conversion - cihai.conversion"
        },
        {
          "id": "cihai.conversion.hexd",
          "level": 2,
          "text": "hexd()"
        },
        {
          "id": "cihai.conversion.kuten_to_gb2312",
          "level": 2,
          "text": "kuten_to_gb2312()"
        },
        {
          "id": "cihai.conversion.gb2312_to_euc",
          "level": 2,
          "text": "gb2312_to_euc()"
        },
        {
          "id": "cihai.conversion.euc_to_python",
          "level": 2,
          "text": "euc_to_python()"
        },
        {
          "id": "cihai.conversion.euc_to_utf8",
          "level": 2,
          "text": "euc_to_utf8()"
        },
        {
          "id": "cihai.conversion.ucn_to_unicode",
          "level": 2,
          "text": "ucn_to_unicode()"
        },
        {
          "id": "cihai.conversion.euc_to_unicode",
          "level": 2,
          "text": "euc_to_unicode()"
        },
        {
          "id": "cihai.conversion.python_to_ucn",
          "level": 2,
          "text": "python_to_ucn()"
        },
        {
          "id": "cihai.conversion.python_to_euc",
          "level": 2,
          "text": "python_to_euc()"
        },
        {
          "id": "cihai.conversion.ucnstring_to_unicode",
          "level": 2,
          "text": "ucnstring_to_unicode()"
        },
        {
          "id": "cihai.conversion.ucnstring_to_python",
          "level": 2,
          "text": "ucnstring_to_python()"
        },
        {
          "id": "cihai.conversion.parse_var",
          "level": 2,
          "text": "parse_var()"
        },
        {
          "id": "cihai.conversion.parse_vars",
          "level": 2,
          "text": "parse_vars()"
        },
        {
          "id": "cihai.conversion.parse_untagged",
          "level": 2,
          "text": "parse_untagged()"
        }
      ]
    },
    {
      "title": "Core - cihai.core",
      "description": "Cihai core functionality.",
      "section": "Documentation",
      "url": "/api/core/",
      "markdownUrl": "/api/core.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Core - cihai.core"
        },
        {
          "id": "cihai.core.CihaiConfigError",
          "level": 2,
          "text": "CihaiConfigError"
        },
        {
          "id": "cihai.core.CihaiConfigError.__init__",
          "level": 3,
          "text": "__init__()"
        },
        {
          "id": "cihai.core.is_valid_config",
          "level": 2,
          "text": "is_valid_config()"
        },
        {
          "id": "cihai.core.Cihai",
          "level": 2,
          "text": "Cihai"
        },
        {
          "id": "cihai.core.Cihai.default_config",
          "level": 3,
          "text": "default_config"
        },
        {
          "id": "cihai.core.Cihai.unihan",
          "level": 3,
          "text": "unihan"
        },
        {
          "id": "cihai.core.Cihai.__init__",
          "level": 3,
          "text": "__init__()"
        },
        {
          "id": "cihai.core.Cihai.config",
          "level": 3,
          "text": "config"
        },
        {
          "id": "cihai.core.Cihai.sql",
          "level": 3,
          "text": "sql"
        },
        {
          "id": "cihai.core.Cihai.bootstrap",
          "level": 3,
          "text": "bootstrap()"
        },
        {
          "id": "cihai.core.Cihai.add_dataset",
          "level": 3,
          "text": "add_dataset()"
        },
        {
          "id": "cihai.core.Cihai.from_file",
          "level": 3,
          "text": "from_file()"
        }
      ]
    },
    {
      "title": "Database - cihai.db",
      "description": "Cihai core functionality.",
      "section": "Documentation",
      "url": "/api/db/",
      "markdownUrl": "/api/db.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Database - cihai.db"
        },
        {
          "id": "cihai.db.Database",
          "level": 2,
          "text": "Database"
        },
        {
          "id": "cihai.db.Database.base",
          "level": 3,
          "text": "base"
        },
        {
          "id": "cihai.db.Database.__init__",
          "level": 3,
          "text": "__init__()"
        },
        {
          "id": "cihai.db.Database.engine",
          "level": 3,
          "text": "engine"
        },
        {
          "id": "cihai.db.Database.metadata",
          "level": 3,
          "text": "metadata"
        },
        {
          "id": "cihai.db.Database.session",
          "level": 3,
          "text": "session"
        },
        {
          "id": "cihai.db.Database.reflect_db",
          "level": 3,
          "text": "reflect_db()"
        }
      ]
    },
    {
      "title": "Exceptions - cihai.exc",
      "description": "When using cihai via Python, you can catch Cihai-specific exceptions via these. All Cihai-specific exceptions are catchable via CihaiException since its the base exception.",
      "section": "Documentation",
      "url": "/api/exc/",
      "markdownUrl": "/api/exc.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Exceptions - cihai.exc"
        },
        {
          "id": "cihai.exc.CihaiException",
          "level": 2,
          "text": "CihaiException"
        },
        {
          "id": "cihai.exc.ImportStringError",
          "level": 2,
          "text": "ImportStringError"
        },
        {
          "id": "cihai.exc.ImportStringError.__init__",
          "level": 3,
          "text": "__init__()"
        },
        {
          "id": "cihai.exc.ImportStringError.import_name",
          "level": 3,
          "text": "import_name"
        },
        {
          "id": "cihai.exc.ImportStringError.exception",
          "level": 3,
          "text": "exception"
        }
      ]
    },
    {
      "title": "Extending - cihai.extend",
      "description": "Cihai Plugin System.",
      "section": "Documentation",
      "url": "/api/extend/",
      "markdownUrl": "/api/extend.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Extending - cihai.extend"
        },
        {
          "id": "cihai.extend.ConfigMixin",
          "level": 2,
          "text": "ConfigMixin"
        },
        {
          "id": "cihai.extend.SQLAlchemyMixin",
          "level": 2,
          "text": "SQLAlchemyMixin"
        },
        {
          "id": "cihai.extend.SQLAlchemyMixin.sql",
          "level": 3,
          "text": "sql"
        },
        {
          "id": "cihai.extend.SQLAlchemyMixin.engine",
          "level": 3,
          "text": "engine"
        },
        {
          "id": "cihai.extend.SQLAlchemyMixin.metadata",
          "level": 3,
          "text": "metadata"
        },
        {
          "id": "cihai.extend.SQLAlchemyMixin.session",
          "level": 3,
          "text": "session"
        },
        {
          "id": "cihai.extend.SQLAlchemyMixin.base",
          "level": 3,
          "text": "base"
        },
        {
          "id": "cihai.extend.Dataset",
          "level": 2,
          "text": "Dataset"
        },
        {
          "id": "cihai.extend.Dataset.bootstrap",
          "level": 3,
          "text": "bootstrap()"
        },
        {
          "id": "cihai.extend.Dataset.add_plugin",
          "level": 3,
          "text": "add_plugin()"
        },
        {
          "id": "cihai.extend.DatasetPlugin",
          "level": 2,
          "text": "DatasetPlugin"
        }
      ]
    },
    {
      "title": "API Reference",
      "description": "cihai’s public API for CJK character lookups and dataset management.",
      "section": "Documentation",
      "url": "/api/",
      "markdownUrl": "/api/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "API Reference"
        },
        {
          "id": "core",
          "level": 2,
          "text": "Core"
        },
        {
          "id": "supporting-modules",
          "level": 2,
          "text": "Supporting Modules"
        }
      ]
    },
    {
      "title": "Logging - cihai.log",
      "description": "Log utilities for cihai.",
      "section": "Documentation",
      "url": "/api/log/",
      "markdownUrl": "/api/log.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Logging - cihai.log"
        },
        {
          "id": "cihai-log",
          "level": 2,
          "text": "cihai.log"
        },
        {
          "id": "cihai.log.LogFormatter",
          "level": 2,
          "text": "LogFormatter"
        },
        {
          "id": "cihai.log.LogFormatter.__init__",
          "level": 3,
          "text": "__init__()"
        },
        {
          "id": "cihai.log.LogFormatter.format",
          "level": 3,
          "text": "format()"
        },
        {
          "id": "cihai.log.LogFormatter.template",
          "level": 3,
          "text": "template()"
        },
        {
          "id": "cihai.log.DebugLogFormatter",
          "level": 2,
          "text": "DebugLogFormatter"
        },
        {
          "id": "cihai.log.DebugLogFormatter.template",
          "level": 3,
          "text": "template()"
        }
      ]
    },
    {
      "title": "Typings - cihai.types",
      "description": "Typings for cihai.",
      "section": "Documentation",
      "url": "/api/types/",
      "markdownUrl": "/api/types.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Typings - cihai.types"
        },
        {
          "id": "cihai.types.RawPluginConfigDict",
          "level": 2,
          "text": "RawPluginConfigDict"
        },
        {
          "id": "cihai.types.RawDirsConfigDict",
          "level": 2,
          "text": "RawDirsConfigDict"
        },
        {
          "id": "cihai.types.RawDirsConfigDict.cache",
          "level": 3,
          "text": "cache"
        },
        {
          "id": "cihai.types.RawDirsConfigDict.log",
          "level": 3,
          "text": "log"
        },
        {
          "id": "cihai.types.RawDirsConfigDict.data",
          "level": 3,
          "text": "data"
        },
        {
          "id": "cihai.types.DirsConfigDict",
          "level": 2,
          "text": "DirsConfigDict"
        },
        {
          "id": "cihai.types.DirsConfigDict.cache",
          "level": 3,
          "text": "cache"
        },
        {
          "id": "cihai.types.DirsConfigDict.log",
          "level": 3,
          "text": "log"
        },
        {
          "id": "cihai.types.DirsConfigDict.data",
          "level": 3,
          "text": "data"
        },
        {
          "id": "cihai.types.RawDatabaseConfigDict",
          "level": 2,
          "text": "RawDatabaseConfigDict"
        },
        {
          "id": "cihai.types.RawDatabaseConfigDict.url",
          "level": 3,
          "text": "url"
        },
        {
          "id": "cihai.types.RawConfigDict",
          "level": 2,
          "text": "RawConfigDict"
        },
        {
          "id": "cihai.types.RawConfigDict.plugins",
          "level": 3,
          "text": "plugins"
        },
        {
          "id": "cihai.types.RawConfigDict.datasets",
          "level": 3,
          "text": "datasets"
        },
        {
          "id": "cihai.types.RawConfigDict.database",
          "level": 3,
          "text": "database"
        },
        {
          "id": "cihai.types.RawConfigDict.dirs",
          "level": 3,
          "text": "dirs"
        },
        {
          "id": "cihai.types.RawConfigDict.debug",
          "level": 3,
          "text": "debug"
        },
        {
          "id": "cihai.types.ConfigDict",
          "level": 2,
          "text": "ConfigDict"
        },
        {
          "id": "cihai.types.ConfigDict.plugins",
          "level": 3,
          "text": "plugins"
        },
        {
          "id": "cihai.types.ConfigDict.datasets",
          "level": 3,
          "text": "datasets"
        },
        {
          "id": "cihai.types.ConfigDict.database",
          "level": 3,
          "text": "database"
        },
        {
          "id": "cihai.types.ConfigDict.dirs",
          "level": 3,
          "text": "dirs"
        },
        {
          "id": "cihai.types.ConfigDict.debug",
          "level": 3,
          "text": "debug"
        }
      ]
    },
    {
      "title": "Utilities - cihai.utils",
      "description": "Utility and helper methods for cihai.",
      "section": "Documentation",
      "url": "/api/utils/",
      "markdownUrl": "/api/utils.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Utilities - cihai.utils"
        },
        {
          "id": "cihai.utils.supports_wide",
          "level": 2,
          "text": "supports_wide()"
        },
        {
          "id": "cihai.utils.import_string",
          "level": 2,
          "text": "import_string()"
        }
      ]
    },
    {
      "title": "Datasets",
      "description": "Data sources available through cihai.",
      "section": "Documentation",
      "url": "/datasets/",
      "markdownUrl": "/datasets/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Datasets"
        },
        {
          "id": "planned-datasets",
          "level": 2,
          "text": "Planned datasets"
        }
      ]
    },
    {
      "title": "UNIHAN - cihai.data.unihan",
      "description": "Fetch + extract + transform + load UNIHAN dataset to Cihai.",
      "section": "Documentation",
      "url": "/datasets/unihan/",
      "markdownUrl": "/datasets/unihan.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "UNIHAN - cihai.data.unihan"
        },
        {
          "id": "module-cihai.data.unihan.bootstrap",
          "level": 2,
          "text": "Bootstrapping"
        },
        {
          "id": "cihai.data.unihan.bootstrap.bootstrap_unihan",
          "level": 3,
          "text": "bootstrap_unihan()"
        },
        {
          "id": "cihai.data.unihan.bootstrap.is_bootstrapped",
          "level": 3,
          "text": "is_bootstrapped()"
        },
        {
          "id": "cihai.data.unihan.bootstrap.create_unihan_table",
          "level": 3,
          "text": "create_unihan_table()"
        },
        {
          "id": "cihai.data.unihan.dataset.Unihan",
          "level": 3,
          "text": "Unihan"
        },
        {
          "id": "cihai.data.unihan.dataset.Unihan.char",
          "level": 4,
          "text": "char"
        },
        {
          "id": "cihai.data.unihan.dataset.Unihan.kDefinition",
          "level": 4,
          "text": "kDefinition"
        },
        {
          "id": "cihai.data.unihan.dataset.Unihan.kTraditionhalVariant",
          "level": 4,
          "text": "kTraditionhalVariant"
        },
        {
          "id": "cihai.data.unihan.dataset.Unihan.kSimplifiedVariant",
          "level": 4,
          "text": "kSimplifiedVariant"
        },
        {
          "id": "cihai.data.unihan.dataset.Unihan.tagged_vars",
          "level": 4,
          "text": "tagged_vars"
        },
        {
          "id": "cihai.data.unihan.dataset.Unihan.untagged_vars",
          "level": 4,
          "text": "untagged_vars"
        },
        {
          "id": "cihai.data.unihan.dataset.Unihan.bootstrap",
          "level": 4,
          "text": "bootstrap()"
        },
        {
          "id": "cihai.data.unihan.dataset.Unihan.lookup_char",
          "level": 4,
          "text": "lookup_char()"
        },
        {
          "id": "cihai.data.unihan.dataset.Unihan.reverse_char",
          "level": 4,
          "text": "reverse_char()"
        },
        {
          "id": "cihai.data.unihan.dataset.Unihan.with_fields",
          "level": 4,
          "text": "with_fields()"
        },
        {
          "id": "cihai.data.unihan.dataset.Unihan.is_bootstrapped",
          "level": 4,
          "text": "is_bootstrapped"
        },
        {
          "id": "cihai.data.unihan.dataset.Unihan.add_plugin",
          "level": 4,
          "text": "add_plugin()"
        },
        {
          "id": "cihai.data.unihan.dataset.Unihan.sql",
          "level": 4,
          "text": "sql"
        },
        {
          "id": "cihai.data.unihan.dataset.Unihan.engine",
          "level": 4,
          "text": "engine"
        },
        {
          "id": "cihai.data.unihan.dataset.Unihan.metadata",
          "level": 4,
          "text": "metadata"
        },
        {
          "id": "cihai.data.unihan.dataset.Unihan.session",
          "level": 4,
          "text": "session"
        },
        {
          "id": "cihai.data.unihan.dataset.Unihan.base",
          "level": 4,
          "text": "base"
        },
        {
          "id": "cihai.data.unihan.constants.UNIHAN_FIELDS",
          "level": 3,
          "text": "UNIHAN_FIELDS"
        },
        {
          "id": "cihai.data.unihan.constants.UNIHAN_ETL_DEFAULT_OPTIONS",
          "level": 3,
          "text": "UNIHAN_ETL_DEFAULT_OPTIONS"
        },
        {
          "id": "variants-plugin",
          "level": 2,
          "text": "Variants plugin"
        },
        {
          "id": "cihai.data.unihan.dataset.UnihanVariants",
          "level": 3,
          "text": "UnihanVariants"
        },
        {
          "id": "cihai.data.unihan.dataset.UnihanVariants.bootstrap",
          "level": 4,
          "text": "bootstrap()"
        },
        {
          "id": "cihai.data.unihan.dataset.UnihanVariants.sql",
          "level": 4,
          "text": "sql"
        },
        {
          "id": "cihai.data.unihan.dataset.UnihanVariants.engine",
          "level": 4,
          "text": "engine"
        },
        {
          "id": "cihai.data.unihan.dataset.UnihanVariants.metadata",
          "level": 4,
          "text": "metadata"
        },
        {
          "id": "cihai.data.unihan.dataset.UnihanVariants.session",
          "level": 4,
          "text": "session"
        },
        {
          "id": "cihai.data.unihan.dataset.UnihanVariants.base",
          "level": 4,
          "text": "base"
        }
      ]
    },
    {
      "title": "Extending",
      "description": "Written Late 2013",
      "section": "Documentation",
      "url": "/design-and-planning/2013/extending/",
      "markdownUrl": "/design-and-planning/2013/extending.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Extending"
        },
        {
          "id": "minimum-usage",
          "level": 2,
          "text": "Minimum usage"
        },
        {
          "id": "code",
          "level": 3,
          "text": "Code"
        },
        {
          "id": "growing-big",
          "level": 2,
          "text": "Growing big"
        },
        {
          "id": "importing-data-into-database",
          "level": 3,
          "text": "Importing data into database"
        },
        {
          "id": "deeper",
          "level": 3,
          "text": "Deeper"
        }
      ]
    },
    {
      "title": "Information Liberation",
      "description": "Written Late 2013",
      "section": "Documentation",
      "url": "/design-and-planning/2013/information_liberation/",
      "markdownUrl": "/design-and-planning/2013/information_liberation.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Information Liberation"
        },
        {
          "id": "permissive-licensing-your-dataset",
          "level": 2,
          "text": "Permissive-licensing your dataset"
        },
        {
          "id": "case-study-ipython",
          "level": 3,
          "text": "Case study: IPython"
        },
        {
          "id": "conclusion",
          "level": 2,
          "text": "Conclusion"
        }
      ]
    },
    {
      "title": "Internal Design decisions",
      "description": "Whether you are Cihai, python, creating a CJK tool in another programming language, or simple looking to use a dataset, cihai will provide tools to turn raw datasets into a familiar table / relatio...",
      "section": "Documentation",
      "url": "/design-and-planning/2013/internals/",
      "markdownUrl": "/design-and-planning/2013/internals.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Internal Design decisions"
        },
        {
          "id": "convenient-relational-cohesive-output-of-datasets",
          "level": 2,
          "text": "Convenient relational, cohesive output of datasets"
        },
        {
          "id": "bootstrapping",
          "level": 2,
          "text": "Bootstrapping"
        }
      ]
    },
    {
      "title": "Planning",
      "description": "Written Late 2013",
      "section": "Documentation",
      "url": "/design-and-planning/2013/spec/",
      "markdownUrl": "/design-and-planning/2013/spec.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Planning"
        },
        {
          "id": "configuration",
          "level": 2,
          "text": "Configuration"
        },
        {
          "id": "history-of-cjk-libraries",
          "level": 2,
          "text": "History of CJK libraries"
        },
        {
          "id": "unihan",
          "level": 3,
          "text": "Unihan"
        },
        {
          "id": "cjklib",
          "level": 3,
          "text": "cjklib"
        },
        {
          "id": "cihai",
          "level": 3,
          "text": "Cihai"
        },
        {
          "id": "current",
          "level": 3,
          "text": "Current"
        },
        {
          "id": "external-api",
          "level": 2,
          "text": "External API"
        },
        {
          "id": "cihai-spec",
          "level": 3,
          "text": "Cihai Spec"
        },
        {
          "id": "licensing",
          "level": 2,
          "text": "Licensing"
        },
        {
          "id": "core-software",
          "level": 3,
          "text": "Core software"
        },
        {
          "id": "extensions-contrib-licensing",
          "level": 3,
          "text": "Extensions / Contrib licensing"
        },
        {
          "id": "data-sets",
          "level": 3,
          "text": "Data sets"
        },
        {
          "id": "how-should-data-be-looked-up",
          "level": 2,
          "text": "How should data be looked up?"
        },
        {
          "id": "chinese-character",
          "level": 3,
          "text": "Chinese character"
        },
        {
          "id": "string-of-chinese-characters",
          "level": 3,
          "text": "String of Chinese Characters"
        },
        {
          "id": "how-should-data-returned-look-schema",
          "level": 2,
          "text": "How should data returned look? Schema."
        },
        {
          "id": "extension-philosophy",
          "level": 2,
          "text": "Extension philosophy"
        },
        {
          "id": "accessing-extensions-directly",
          "level": 2,
          "text": "Accessing extensions directly?"
        },
        {
          "id": "api-examples",
          "level": 2,
          "text": "API examples"
        },
        {
          "id": "creating-a-cihai-plugin",
          "level": 2,
          "text": "Creating a cihai plugin"
        }
      ]
    },
    {
      "title": "Internals Planning",
      "description": "Created 2017-04-29",
      "section": "Documentation",
      "url": "/design-and-planning/2017/spec/",
      "markdownUrl": "/design-and-planning/2017/spec.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Internals Planning"
        },
        {
          "id": "zero-config",
          "level": 2,
          "text": "Zero config"
        },
        {
          "id": "incremental-configuration",
          "level": 2,
          "text": "Incremental configuration"
        },
        {
          "id": "relational-backend",
          "level": 2,
          "text": "Relational backend"
        },
        {
          "id": "automatic-extension-detection",
          "level": 2,
          "text": "Automatic extension detection"
        },
        {
          "id": "unihan-core",
          "level": 2,
          "text": "UNIHAN core"
        },
        {
          "id": "operation",
          "level": 3,
          "text": "Operation"
        },
        {
          "id": "data-normalization",
          "level": 2,
          "text": "Data normalization"
        },
        {
          "id": "standards",
          "level": 3,
          "text": "Standards"
        },
        {
          "id": "data-liberation",
          "level": 2,
          "text": "Data liberation"
        }
      ]
    },
    {
      "title": "Extensions",
      "description": "Initially discussed in #131 1",
      "section": "Documentation",
      "url": "/design-and-planning/2018/plugin-system/",
      "markdownUrl": "/design-and-planning/2018/plugin-system.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Extensions"
        },
        {
          "id": "benefits",
          "level": 1,
          "text": "Benefits"
        },
        {
          "id": "versioning",
          "level": 1,
          "text": "Versioning"
        },
        {
          "id": "extending-datasets",
          "level": 1,
          "text": "Extending datasets"
        },
        {
          "id": "todo",
          "level": 1,
          "text": "Todo"
        },
        {
          "id": "history",
          "level": 1,
          "text": "History"
        },
        {
          "id": "idea-pip-based-add-dataset-add-extension",
          "level": 1,
          "text": "Idea: pip-based add_dataset/add_extension"
        },
        {
          "id": "idea-namespacing",
          "level": 1,
          "text": "Idea: Namespacing"
        },
        {
          "id": "see-also",
          "level": 1,
          "text": "See Also"
        }
      ]
    },
    {
      "title": "Design and Planning",
      "description": "design-and-planning/2018/plugin-system",
      "section": "Documentation",
      "url": "/design-and-planning/",
      "markdownUrl": "/design-and-planning/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Design and Planning"
        },
        {
          "id": "id2",
          "level": 2,
          "text": "2018"
        },
        {
          "id": "id3",
          "level": 2,
          "text": "2017"
        },
        {
          "id": "late-2013",
          "level": 2,
          "text": "Late 2013"
        },
        {
          "id": "late-2012",
          "level": 2,
          "text": "Late 2012"
        }
      ]
    },
    {
      "title": "Glossary",
      "description": "In computer software, internationalization of Chinese, Japanese, and Korean language.",
      "section": "Documentation",
      "url": "/glossary/",
      "markdownUrl": "/glossary.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Glossary"
        }
      ]
    },
    {
      "title": "Changelog",
      "description": "You can test the unpublished version of cihai before it’s released. See developmental releases.",
      "section": "Documentation",
      "url": "/history/",
      "markdownUrl": "/history.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Changelog"
        },
        {
          "id": "cihai-0-37-x-unreleased",
          "level": 2,
          "text": "cihai 0.37.x (unreleased)"
        },
        {
          "id": "breaking-changes",
          "level": 3,
          "text": "Breaking changes"
        },
        {
          "id": "minimum-unihan-etl-0-41-0-was-0-39-1-393",
          "level": 4,
          "text": "Minimum unihan-etl>=0.41.0 (was >=0.39.1) (#393)"
        },
        {
          "id": "what-s-new",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "documentation-reorganized-around-everyday-library-tasks-394",
          "level": 4,
          "text": "Documentation reorganized around everyday library tasks (#394)"
        },
        {
          "id": "smoother-docs-frontend-for-repeated-navigation-392",
          "level": 4,
          "text": "Smoother docs frontend for repeated navigation (#392)"
        },
        {
          "id": "api-reference-gets-structured-autodoc-presentation-396",
          "level": 4,
          "text": "API reference gets structured autodoc presentation (#396)"
        },
        {
          "id": "fixes",
          "level": 3,
          "text": "Fixes"
        },
        {
          "id": "sphinx-warning-cleanup-for-public-docs-and-api-docstrings-397",
          "level": 4,
          "text": "Sphinx warning cleanup for public docs and API docstrings (#397)"
        },
        {
          "id": "documentation",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "shared-gp-sphinx-platform-replaces-local-docs-plumbing-395",
          "level": 4,
          "text": "Shared gp-sphinx platform replaces local docs plumbing (#395)"
        },
        {
          "id": "gp-sphinx-docs-stack-refreshed-through-0-0-1a17-398-399",
          "level": 4,
          "text": "gp-sphinx docs stack refreshed through 0.0.1a17 (#398, #399)"
        },
        {
          "id": "cihai-0-36-1-2026-01-24",
          "level": 2,
          "text": "cihai 0.36.1 (2026-01-24)"
        },
        {
          "id": "id1",
          "level": 3,
          "text": "Breaking changes"
        },
        {
          "id": "minimum-unihan-etl-0-39-1-was-0-38-0-389",
          "level": 4,
          "text": "Minimum unihan-etl>=0.39.1 (was >=0.38.0) (#389)"
        },
        {
          "id": "development",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "makefile-tasks-moved-to-just-388",
          "level": 4,
          "text": "Makefile tasks moved to just (#388)"
        },
        {
          "id": "pypi-and-docs-publishing-use-identity-based-credentials-387",
          "level": 4,
          "text": "PyPI and docs publishing use identity-based credentials (#387)"
        },
        {
          "id": "cihai-0-36-0-2025-11-01",
          "level": 2,
          "text": "cihai 0.36.0 (2025-11-01)"
        },
        {
          "id": "id2",
          "level": 3,
          "text": "Breaking changes"
        },
        {
          "id": "python-3-10-is-now-the-minimum-386",
          "level": 4,
          "text": "Python 3.10 is now the minimum (#386)"
        },
        {
          "id": "minimum-unihan-etl-0-38-0-was-0-37-0",
          "level": 4,
          "text": "Minimum unihan-etl>=0.38.0 (was >=0.37.0)"
        },
        {
          "id": "id3",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "python-3-14-added-to-the-test-matrix-385",
          "level": 4,
          "text": "Python 3.14 added to the test matrix (#385)"
        },
        {
          "id": "deferred-annotations-adopted-across-the-codebase-383",
          "level": 4,
          "text": "Deferred annotations adopted across the codebase (#383)"
        },
        {
          "id": "cihai-0-35-0-2024-12-21",
          "level": 2,
          "text": "cihai 0.35.0 (2024-12-21)"
        },
        {
          "id": "id4",
          "level": 3,
          "text": "Breaking changes"
        },
        {
          "id": "python-3-9-is-now-the-minimum-382",
          "level": 4,
          "text": "Python 3.9 is now the minimum (#382)"
        },
        {
          "id": "minimum-unihan-etl-0-37-0-382",
          "level": 4,
          "text": "Minimum unihan-etl>=0.37.0 (#382)"
        },
        {
          "id": "id5",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "ruff-applied-broad-automated-cleanup-382",
          "level": 4,
          "text": "Ruff applied broad automated cleanup (#382)"
        },
        {
          "id": "cihai-0-34-0-2024-11-26",
          "level": 2,
          "text": "cihai 0.34.0 (2024-11-26)"
        },
        {
          "id": "id6",
          "level": 3,
          "text": "Breaking changes"
        },
        {
          "id": "project-management-moved-from-poetry-to-uv-380",
          "level": 4,
          "text": "Project management moved from Poetry to uv (#380)"
        },
        {
          "id": "build-backend-moved-from-poetry-to-hatchling-380",
          "level": 4,
          "text": "Build backend moved from Poetry to hatchling (#380)"
        },
        {
          "id": "id7",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-revision-37-data-cleanup",
          "level": 4,
          "text": "UNIHAN Revision 37 data cleanup"
        },
        {
          "id": "ruff-f-string-cleanup-371",
          "level": 4,
          "text": "Ruff f-string cleanup (#371)"
        },
        {
          "id": "cihai-0-33-0-2024-04-06",
          "level": 2,
          "text": "cihai 0.33.0 (2024-04-06)"
        },
        {
          "id": "id8",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "id9",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "ruff-automated-cleanup-369",
          "level": 4,
          "text": "Ruff automated cleanup (#369)"
        },
        {
          "id": "cihai-0-32-0-2024-04-01",
          "level": 2,
          "text": "cihai 0.32.0 (2024-04-01)"
        },
        {
          "id": "id10",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "cihai-0-31-0-2024-02-09",
          "level": 2,
          "text": "cihai 0.31.0 (2024-02-09)"
        },
        {
          "id": "id11",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "unihan-compatibility-updated-to-15-1-0-366",
          "level": 4,
          "text": "UNIHAN compatibility updated to 15.1.0 (#366)"
        },
        {
          "id": "id12",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "api-reference-split-into-multiple-pages-363",
          "level": 4,
          "text": "API reference split into multiple pages (#363)"
        },
        {
          "id": "id13",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "ruff-lint-coverage-strengthened-367",
          "level": 4,
          "text": "Ruff lint coverage strengthened (#367)"
        },
        {
          "id": "cihai-0-30-0-2023-12-09",
          "level": 2,
          "text": "cihai 0.30.0 (2023-12-09)"
        },
        {
          "id": "id14",
          "level": 3,
          "text": "Fixes"
        },
        {
          "id": "id15",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "id16",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "cihai-0-29-0-2023-11-19",
          "level": 2,
          "text": "cihai 0.29.0 (2023-11-19)"
        },
        {
          "id": "packaging",
          "level": 3,
          "text": "Packaging"
        },
        {
          "id": "id17",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "cihai-0-28-0-2023-07-22",
          "level": 2,
          "text": "cihai 0.28.0 (2023-07-22)"
        },
        {
          "id": "cihai-0-27-0-2023-07-18",
          "level": 2,
          "text": "cihai 0.27.0 (2023-07-18)"
        },
        {
          "id": "id18",
          "level": 3,
          "text": "Fixes"
        },
        {
          "id": "id19",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "cihai-0-26-0-2023-07-01",
          "level": 2,
          "text": "cihai 0.26.0 (2023-07-01)"
        },
        {
          "id": "cihai-0-25-0-2023-06-24",
          "level": 2,
          "text": "cihai 0.25.0 (2023-06-24)"
        },
        {
          "id": "cihai-0-24-0-2023-06-24",
          "level": 2,
          "text": "cihai 0.24.0 (2023-06-24)"
        },
        {
          "id": "cihai-0-23-0-2023-06-19",
          "level": 2,
          "text": "cihai 0.23.0 (2023-06-19)"
        },
        {
          "id": "cihai-0-22-1-2023-06-18",
          "level": 2,
          "text": "cihai 0.22.1 (2023-06-18)"
        },
        {
          "id": "cihai-0-22-0-2023-06-18",
          "level": 2,
          "text": "cihai 0.22.0 (2023-06-18)"
        },
        {
          "id": "cihai-0-21-0-2023-06-03",
          "level": 2,
          "text": "cihai 0.21.0 (2023-06-03)"
        },
        {
          "id": "id20",
          "level": 3,
          "text": "Breaking changes"
        },
        {
          "id": "sqlalchemy-2-0-is-now-required-340",
          "level": 4,
          "text": "SQLAlchemy 2.0 is now required (#340)"
        },
        {
          "id": "id21",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "cihai-0-20-0-2023-05-29",
          "level": 2,
          "text": "cihai 0.20.0 (2023-05-29)"
        },
        {
          "id": "id22",
          "level": 3,
          "text": "Breaking changes"
        },
        {
          "id": "python-3-7-support-removed-343",
          "level": 4,
          "text": "Python 3.7 support removed (#343)"
        },
        {
          "id": "id23",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "strict-mypy-typing-adopted-324",
          "level": 4,
          "text": "Strict mypy typing adopted (#324)"
        },
        {
          "id": "cihai-0-19-0-2023-05-28",
          "level": 2,
          "text": "cihai 0.19.0 (2023-05-28)"
        },
        {
          "id": "id24",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "cihai-0-18-3-2023-05-13",
          "level": 2,
          "text": "cihai 0.18.3 (2023-05-13)"
        },
        {
          "id": "cihai-0-18-2-2022-10-02",
          "level": 2,
          "text": "cihai 0.18.2 (2022-10-02)"
        },
        {
          "id": "cihai-0-18-1-2022-10-01",
          "level": 2,
          "text": "cihai 0.18.1 (2022-10-01)"
        },
        {
          "id": "cihai-0-18-0-2022-10-01",
          "level": 2,
          "text": "cihai 0.18.0 (2022-10-01)"
        },
        {
          "id": "id25",
          "level": 3,
          "text": "Breaking changes"
        },
        {
          "id": "cihai-0-17-1-2022-10-01",
          "level": 2,
          "text": "cihai 0.17.1 (2022-10-01)"
        },
        {
          "id": "cihai-0-17-0-2022-09-11",
          "level": 2,
          "text": "cihai 0.17.0 (2022-09-11)"
        },
        {
          "id": "id26",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "id27",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "cihai-0-16-0-2022-08-21",
          "level": 2,
          "text": "cihai 0.16.0 (2022-08-21)"
        },
        {
          "id": "cihai-0-15-0-2022-08-20",
          "level": 2,
          "text": "cihai 0.15.0 (2022-08-20)"
        },
        {
          "id": "id28",
          "level": 3,
          "text": "Breaking changes"
        },
        {
          "id": "cihai-0-14-1-2022-08-20",
          "level": 2,
          "text": "cihai 0.14.1 (2022-08-20)"
        },
        {
          "id": "cihai-0-14-0-2022-08-20",
          "level": 2,
          "text": "cihai 0.14.0 (2022-08-20)"
        },
        {
          "id": "id29",
          "level": 3,
          "text": "Breaking changes"
        },
        {
          "id": "cihai-0-13-0-2022-08-16",
          "level": 2,
          "text": "cihai 0.13.0 (2022-08-16)"
        },
        {
          "id": "compatibility",
          "level": 3,
          "text": "Compatibility"
        },
        {
          "id": "id30",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "id31",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "cihai-0-12-0-2021-06-16",
          "level": 2,
          "text": "cihai 0.12.0 (2021-06-16)"
        },
        {
          "id": "cihai-0-11-1-2021-06-15",
          "level": 2,
          "text": "cihai 0.11.1 (2021-06-15)"
        },
        {
          "id": "cihai-0-11-0-2021-06-15",
          "level": 2,
          "text": "cihai 0.11.0 (2021-06-15)"
        },
        {
          "id": "cihai-0-10-0-2020-08-09",
          "level": 2,
          "text": "cihai 0.10.0 (2020-08-09)"
        },
        {
          "id": "id32",
          "level": 3,
          "text": "Packaging"
        },
        {
          "id": "documentation-and-ci",
          "level": 3,
          "text": "Documentation and CI"
        },
        {
          "id": "cihai-0-9-0p1-2019-08-18",
          "level": 2,
          "text": "cihai 0.9.0p1 (2019-08-18)"
        },
        {
          "id": "cihai-0-9-0p0-2019-08-18",
          "level": 2,
          "text": "cihai 0.9.0p0 (2019-08-18)"
        },
        {
          "id": "cihai-0-9-0-2019-08-18",
          "level": 2,
          "text": "cihai 0.9.0 (2019-08-18)"
        },
        {
          "id": "cihai-0-9-0a4-2019-08-17",
          "level": 2,
          "text": "cihai 0.9.0a4 (2019-08-17)"
        },
        {
          "id": "cihai-0-9-0a-2018-09-07",
          "level": 2,
          "text": "cihai 0.9.0a (2018-09-07)"
        },
        {
          "id": "id33",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "id34",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "cihai-0-8-1-2018-07-21",
          "level": 2,
          "text": "cihai 0.8.1 (2018-07-21)"
        },
        {
          "id": "cihai-0-8-0-2018-06-23",
          "level": 2,
          "text": "cihai 0.8.0 (2018-06-23)"
        },
        {
          "id": "id35",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "documentation-and-licensing",
          "level": 3,
          "text": "Documentation and licensing"
        },
        {
          "id": "cihai-0-7-4-2017-05-26",
          "level": 2,
          "text": "cihai 0.7.4 (2017-05-26)"
        },
        {
          "id": "cihai-0-7-3-2017-05-20",
          "level": 2,
          "text": "cihai 0.7.3 (2017-05-20)"
        },
        {
          "id": "cihai-0-7-2-2017-05-20",
          "level": 2,
          "text": "cihai 0.7.2 (2017-05-20)"
        },
        {
          "id": "cihai-0-7-1-2017-05-20",
          "level": 2,
          "text": "cihai 0.7.1 (2017-05-20)"
        },
        {
          "id": "cihai-0-7-0-2017-05-20",
          "level": 2,
          "text": "cihai 0.7.0 (2017-05-20)"
        },
        {
          "id": "cihai-0-6-1-2017-05-17",
          "level": 2,
          "text": "cihai 0.6.1 (2017-05-17)"
        },
        {
          "id": "cihai-0-6-0-2017-05-17",
          "level": 2,
          "text": "cihai 0.6.0 (2017-05-17)"
        },
        {
          "id": "cihai-0-5-1-2017-05-17",
          "level": 2,
          "text": "cihai 0.5.1 (2017-05-17)"
        },
        {
          "id": "cihai-0-5-0-2017-05-17",
          "level": 2,
          "text": "cihai 0.5.0 (2017-05-17)"
        },
        {
          "id": "cihai-0-4-2-2017-05-16",
          "level": 2,
          "text": "cihai 0.4.2 (2017-05-16)"
        },
        {
          "id": "cihai-0-4-1-2017-05-16",
          "level": 2,
          "text": "cihai 0.4.1 (2017-05-16)"
        },
        {
          "id": "cihai-0-4-0-2017-05-16",
          "level": 2,
          "text": "cihai 0.4.0 (2017-05-16)"
        },
        {
          "id": "id36",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "id37",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "cihai-0-3-0-2017-04-16",
          "level": 2,
          "text": "cihai 0.3.0 (2017-04-16)"
        },
        {
          "id": "id38",
          "level": 3,
          "text": "What’s new"
        }
      ]
    },
    {
      "title": "cihai",
      "description": "Python library for CJK (Chinese, Japanese, Korean) character data. Look up readings, definitions, and variants from the UNIHAN database and beyond.",
      "section": "",
      "url": "/",
      "markdownUrl": "/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "cihai"
        },
        {
          "id": "install",
          "level": 2,
          "text": "Install"
        },
        {
          "id": "at-a-glance",
          "level": 2,
          "text": "At a glance"
        }
      ]
    },
    {
      "title": "Config reader - cihai._internal.config_reader",
      "description": "",
      "section": "Documentation",
      "url": "/internals/api/config_reader/",
      "markdownUrl": "/internals/api/config_reader.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Config reader - cihai._internal.config_reader"
        },
        {
          "id": "cihai._internal.config_reader.ConfigfmtNotImplementedError",
          "level": 2,
          "text": "ConfigfmtNotImplementedError"
        },
        {
          "id": "cihai._internal.config_reader.ConfigfmtNotImplementedError.__init__",
          "level": 3,
          "text": "__init__()"
        },
        {
          "id": "cihai._internal.config_reader.ConfigExtensionNotImplementedError",
          "level": 2,
          "text": "ConfigExtensionNotImplementedError"
        },
        {
          "id": "cihai._internal.config_reader.ConfigExtensionNotImplementedError.__init__",
          "level": 3,
          "text": "__init__()"
        },
        {
          "id": "cihai._internal.config_reader.ConfigReader",
          "level": 2,
          "text": "ConfigReader"
        },
        {
          "id": "cihai._internal.config_reader.ConfigReader.__init__",
          "level": 3,
          "text": "__init__()"
        },
        {
          "id": "cihai._internal.config_reader.ConfigReader._load",
          "level": 3,
          "text": "_load()"
        },
        {
          "id": "cihai._internal.config_reader.ConfigReader.load",
          "level": 3,
          "text": "load()"
        },
        {
          "id": "cihai._internal.config_reader.ConfigReader._from_file",
          "level": 3,
          "text": "_from_file()"
        },
        {
          "id": "cihai._internal.config_reader.ConfigReader.from_file",
          "level": 3,
          "text": "from_file()"
        },
        {
          "id": "cihai._internal.config_reader.ConfigReader._dump",
          "level": 3,
          "text": "_dump()"
        },
        {
          "id": "cihai._internal.config_reader.ConfigReader.dump",
          "level": 3,
          "text": "dump()"
        }
      ]
    },
    {
      "title": "Internal API",
      "description": "",
      "section": "Documentation",
      "url": "/internals/api/",
      "markdownUrl": "/internals/api/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Internal API"
        }
      ]
    },
    {
      "title": "Typings - cihai._internal.types",
      "description": "Internal type annotations.",
      "section": "Documentation",
      "url": "/internals/api/types/",
      "markdownUrl": "/internals/api/types.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Typings - cihai._internal.types"
        },
        {
          "id": "cihai._internal.types.StrPath",
          "level": 2,
          "text": "StrPath"
        },
        {
          "id": "cihai._internal.types.StrOrBytesPath",
          "level": 2,
          "text": "StrOrBytesPath"
        }
      ]
    },
    {
      "title": "Internals",
      "description": "Internal configuration file loading and expansion.",
      "section": "Documentation",
      "url": "/internals/",
      "markdownUrl": "/internals/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Internals"
        }
      ]
    },
    {
      "title": "Code Style",
      "description": "cihai follows consistent coding standards across all repositories in the cihai organization.",
      "section": "Documentation",
      "url": "/project/code-style/",
      "markdownUrl": "/project/code-style.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Code Style"
        },
        {
          "id": "formatting-and-linting",
          "level": 2,
          "text": "Formatting and linting"
        },
        {
          "id": "type-checking",
          "level": 2,
          "text": "Type checking"
        },
        {
          "id": "docstrings",
          "level": 2,
          "text": "Docstrings"
        },
        {
          "id": "imports",
          "level": 2,
          "text": "Imports"
        }
      ]
    },
    {
      "title": "Contributing",
      "description": "As an open source project, all cihai projects accept contributions through GitHub, GitLab and Codeberg. Below you will find resources on the internals of the project.",
      "section": "Documentation",
      "url": "/project/contributing/",
      "markdownUrl": "/project/contributing.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Contributing"
        },
        {
          "id": "development-environment",
          "level": 2,
          "text": "Development environment"
        },
        {
          "id": "install-dependencies",
          "level": 2,
          "text": "Install dependencies"
        },
        {
          "id": "tests",
          "level": 2,
          "text": "Tests"
        },
        {
          "id": "rerun-on-file-change",
          "level": 3,
          "text": "Rerun on file change"
        },
        {
          "id": "manual-just-the-command-please",
          "level": 3,
          "text": "Manual (just the command, please)"
        },
        {
          "id": "pytest-options",
          "level": 3,
          "text": "pytest options"
        },
        {
          "id": "manual-invocation",
          "level": 3,
          "text": "Manual invocation"
        },
        {
          "id": "documentation",
          "level": 2,
          "text": "Documentation"
        },
        {
          "id": "manual-documentation-the-hard-way",
          "level": 3,
          "text": "Manual documentation (the hard way)"
        },
        {
          "id": "view-documentation-locally",
          "level": 3,
          "text": "View documentation locally"
        },
        {
          "id": "formatting-linting",
          "level": 2,
          "text": "Formatting / Linting"
        },
        {
          "id": "ruff",
          "level": 3,
          "text": "ruff"
        },
        {
          "id": "ruff-format",
          "level": 4,
          "text": "ruff format"
        },
        {
          "id": "mypy",
          "level": 3,
          "text": "mypy"
        },
        {
          "id": "releasing",
          "level": 2,
          "text": "Releasing"
        },
        {
          "id": "automated-deployment",
          "level": 3,
          "text": "Automated deployment"
        },
        {
          "id": "manual-deployment",
          "level": 3,
          "text": "Manual deployment"
        }
      ]
    },
    {
      "title": "Project",
      "description": "Information for contributors and maintainers.",
      "section": "Documentation",
      "url": "/project/",
      "markdownUrl": "/project/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Project"
        }
      ]
    },
    {
      "title": "Releasing",
      "description": "Since cihai is used in production projects, breaking changes are deferred until a major feature release.",
      "section": "Documentation",
      "url": "/project/releasing/",
      "markdownUrl": "/project/releasing.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Releasing"
        },
        {
          "id": "version-numbering",
          "level": 2,
          "text": "Version numbering"
        },
        {
          "id": "release-checklist",
          "level": 2,
          "text": "Release checklist"
        },
        {
          "id": "automated-deployment",
          "level": 2,
          "text": "Automated deployment"
        },
        {
          "id": "manual-deployment",
          "level": 2,
          "text": "Manual deployment"
        }
      ]
    },
    {
      "title": "Quickstart",
      "description": "cihai is designed to work out-of-the-box without configuration.",
      "section": "Documentation",
      "url": "/quickstart/",
      "markdownUrl": "/quickstart.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Quickstart"
        },
        {
          "id": "installation",
          "level": 2,
          "text": "Installation"
        },
        {
          "id": "developmental-releases",
          "level": 3,
          "text": "Developmental releases"
        },
        {
          "id": "configuration",
          "level": 2,
          "text": "Configuration"
        },
        {
          "id": "advanced-config",
          "level": 3,
          "text": "Advanced Config"
        }
      ]
    },
    {
      "title": "Examples",
      "description": "examples/basic_usage.py:",
      "section": "Documentation",
      "url": "/topics/examples/",
      "markdownUrl": "/topics/examples.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Examples"
        },
        {
          "id": "basic-usage",
          "level": 2,
          "text": "Basic usage"
        },
        {
          "id": "character-variants",
          "level": 2,
          "text": "Character variants"
        }
      ]
    },
    {
      "title": "Extending cihai",
      "description": "Use cihai’s abstraction and your dataset’s users can receive easy configuration, SQL access, and be available in a growing list of CJKV information.",
      "section": "Documentation",
      "url": "/topics/extending/",
      "markdownUrl": "/topics/extending.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Extending cihai"
        },
        {
          "id": "creating-new-dataset",
          "level": 2,
          "text": "Creating new dataset"
        },
        {
          "id": "plugins-adding-features-to-a-dataset",
          "level": 2,
          "text": "Plugins: Adding features to a dataset"
        },
        {
          "id": "combining-datasets",
          "level": 2,
          "text": "Combining datasets"
        }
      ]
    },
    {
      "title": "Features",
      "description": "Handling CJK Variants",
      "section": "Documentation",
      "url": "/topics/features/",
      "markdownUrl": "/topics/features.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Features"
        }
      ]
    },
    {
      "title": "Topics",
      "description": "Explore cihai’s capabilities and underlying concepts at a high level, with detailed explanations to help you understand its design and usage.",
      "section": "Documentation",
      "url": "/topics/",
      "markdownUrl": "/topics/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Topics"
        }
      ]
    },
    {
      "title": "Troubleshooting",
      "description": "Note, to get this working on python 2.7, you must have python built with UCS4 via --enable-unicode=ucs4. You can test for UCS4 with:",
      "section": "Documentation",
      "url": "/topics/troubleshooting/",
      "markdownUrl": "/topics/troubleshooting.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Troubleshooting"
        },
        {
          "id": "python-2-7-and-ucs",
          "level": 2,
          "text": "Python 2.7 and UCS"
        }
      ]
    }
  ]
}
