{
  "name": "unihan-etl",
  "url": "https://unihan-etl.git-pull.com",
  "description": "Download, search, and export Unicode’s UNIHAN CJK character dataset. Normalizes raw Unicode data files into clean JSON, CSV, or YAML.",
  "sourceRepository": "https://github.com/cihai/unihan-etl/",
  "agentEntrypoints": {
    "manifest": "/docs.json",
    "llms": "/llms.txt",
    "llmsFull": "/llms-full.txt"
  },
  "pages": [
    {
      "title": "Constants - unihan_etl.constants",
      "description": "Constants for unihan_etl.",
      "section": "Documentation",
      "url": "/api/constants/",
      "markdownUrl": "/api/constants.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Constants - unihan_etl.constants"
        },
        {
          "id": "unihan_etl.constants.UNIHAN_MANIFEST",
          "level": 2,
          "text": "UNIHAN_MANIFEST"
        },
        {
          "id": "unihan_etl.constants.CUSTOM_DELIMITED_FIELDS",
          "level": 2,
          "text": "CUSTOM_DELIMITED_FIELDS"
        },
        {
          "id": "unihan_etl.constants.SPACE_DELIMITED_DICT_FIELDS",
          "level": 2,
          "text": "SPACE_DELIMITED_DICT_FIELDS"
        },
        {
          "id": "unihan_etl.constants.SPACE_DELIMITED_LIST_FIELDS",
          "level": 2,
          "text": "SPACE_DELIMITED_LIST_FIELDS"
        },
        {
          "id": "unihan_etl.constants.SPACE_DELIMITED_FIELDS",
          "level": 2,
          "text": "SPACE_DELIMITED_FIELDS"
        },
        {
          "id": "unihan_etl.constants.INDEX_FIELDS",
          "level": 2,
          "text": "INDEX_FIELDS"
        },
        {
          "id": "unihan_etl.constants.WORK_DIR",
          "level": 2,
          "text": "WORK_DIR"
        },
        {
          "id": "unihan_etl.constants.UNIHAN_FILES",
          "level": 2,
          "text": "UNIHAN_FILES"
        },
        {
          "id": "unihan_etl.constants.UNIHAN_URL",
          "level": 2,
          "text": "UNIHAN_URL"
        },
        {
          "id": "unihan_etl.constants.DESTINATION_DIR",
          "level": 2,
          "text": "DESTINATION_DIR"
        },
        {
          "id": "unihan_etl.constants.UNIHAN_ZIP_PATH",
          "level": 2,
          "text": "UNIHAN_ZIP_PATH"
        },
        {
          "id": "unihan_etl.constants.UNIHAN_FIELDS",
          "level": 2,
          "text": "UNIHAN_FIELDS"
        },
        {
          "id": "unihan_etl.constants.ALLOWED_EXPORT_TYPES",
          "level": 2,
          "text": "ALLOWED_EXPORT_TYPES"
        }
      ]
    },
    {
      "title": "Core - unihan_etl.core",
      "description": "Download + ETL UNIHAN into structured format and export it.",
      "section": "Documentation",
      "url": "/api/core/",
      "markdownUrl": "/api/core.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Core - unihan_etl.core"
        },
        {
          "id": "unihan_etl.core.not_junk",
          "level": 2,
          "text": "not_junk()"
        },
        {
          "id": "unihan_etl.core.in_fields",
          "level": 2,
          "text": "in_fields()"
        },
        {
          "id": "unihan_etl.core.filter_manifest",
          "level": 2,
          "text": "filter_manifest()"
        },
        {
          "id": "unihan_etl.core.files_exist",
          "level": 2,
          "text": "files_exist()"
        },
        {
          "id": "unihan_etl.core.FieldNotFound",
          "level": 2,
          "text": "FieldNotFound"
        },
        {
          "id": "unihan_etl.core.FieldNotFound.__init__",
          "level": 3,
          "text": "__init__()"
        },
        {
          "id": "unihan_etl.core.FileNotSupported",
          "level": 2,
          "text": "FileNotSupported"
        },
        {
          "id": "unihan_etl.core.FileNotSupported.__init__",
          "level": 3,
          "text": "__init__()"
        },
        {
          "id": "unihan_etl.core.get_files",
          "level": 2,
          "text": "get_files()"
        },
        {
          "id": "unihan_etl.core.get_parser",
          "level": 2,
          "text": "get_parser()"
        },
        {
          "id": "unihan_etl.core.has_valid_zip",
          "level": 2,
          "text": "has_valid_zip()"
        },
        {
          "id": "unihan_etl.core.zip_has_files",
          "level": 2,
          "text": "zip_has_files()"
        },
        {
          "id": "unihan_etl.core.download",
          "level": 2,
          "text": "download()"
        },
        {
          "id": "unihan_etl.core.load_data",
          "level": 2,
          "text": "load_data()"
        },
        {
          "id": "unihan_etl.core.extract_zip",
          "level": 2,
          "text": "extract_zip()"
        },
        {
          "id": "unihan_etl.core.normalize",
          "level": 2,
          "text": "normalize()"
        },
        {
          "id": "unihan_etl.core.expand_delimiters",
          "level": 2,
          "text": "expand_delimiters()"
        },
        {
          "id": "unihan_etl.core.listify",
          "level": 2,
          "text": "listify()"
        },
        {
          "id": "unihan_etl.core.export_csv",
          "level": 2,
          "text": "export_csv()"
        },
        {
          "id": "unihan_etl.core.export_json",
          "level": 2,
          "text": "export_json()"
        },
        {
          "id": "unihan_etl.core.export_yaml",
          "level": 2,
          "text": "export_yaml()"
        },
        {
          "id": "unihan_etl.core.is_default_option",
          "level": 2,
          "text": "is_default_option()"
        },
        {
          "id": "unihan_etl.core.validate_options",
          "level": 2,
          "text": "validate_options()"
        },
        {
          "id": "unihan_etl.core.Packager",
          "level": 2,
          "text": "Packager"
        },
        {
          "id": "unihan_etl.core.Packager.__init__",
          "level": 3,
          "text": "__init__()"
        },
        {
          "id": "unihan_etl.core.Packager.options",
          "level": 3,
          "text": "options"
        },
        {
          "id": "unihan_etl.core.Packager.download",
          "level": 3,
          "text": "download()"
        },
        {
          "id": "unihan_etl.core.Packager.export",
          "level": 3,
          "text": "export()"
        },
        {
          "id": "unihan_etl.core.Packager.from_cli",
          "level": 3,
          "text": "from_cli()"
        },
        {
          "id": "unihan_etl.core.setup_logger",
          "level": 2,
          "text": "setup_logger()"
        }
      ]
    },
    {
      "title": "Expansion - unihan_etl.expansion",
      "description": "Functions to uncompact details inside field values.",
      "section": "Documentation",
      "url": "/api/expansion/",
      "markdownUrl": "/api/expansion.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Expansion - unihan_etl.expansion"
        },
        {
          "id": "unihan_etl.expansion.N_DIACRITICS",
          "level": 2,
          "text": "N_DIACRITICS"
        },
        {
          "id": "unihan_etl.expansion.expand_kDefinition",
          "level": 2,
          "text": "expand_kDefinition()"
        },
        {
          "id": "unihan_etl.expansion.kMandarinDict",
          "level": 2,
          "text": "kMandarinDict"
        },
        {
          "id": "unihan_etl.expansion.expand_kMandarin",
          "level": 2,
          "text": "expand_kMandarin()"
        },
        {
          "id": "unihan_etl.expansion.kTotalStrokesDict",
          "level": 2,
          "text": "kTotalStrokesDict"
        },
        {
          "id": "unihan_etl.expansion.expand_kTotalStrokes",
          "level": 2,
          "text": "expand_kTotalStrokes()"
        },
        {
          "id": "unihan_etl.expansion.kAlternateTotalStrokesDict",
          "level": 2,
          "text": "kAlternateTotalStrokesDict"
        },
        {
          "id": "unihan_etl.expansion.kAlternateTotalStrokesDict.sources",
          "level": 3,
          "text": "sources"
        },
        {
          "id": "unihan_etl.expansion.kAlternateTotalStrokesDict.strokes",
          "level": 3,
          "text": "strokes"
        },
        {
          "id": "unihan_etl.expansion.is_valid_kAlternateTotalStrokes_irg_source",
          "level": 2,
          "text": "is_valid_kAlternateTotalStrokes_irg_source()"
        },
        {
          "id": "unihan_etl.expansion.expand_kAlternateTotalStrokes",
          "level": 2,
          "text": "expand_kAlternateTotalStrokes()"
        },
        {
          "id": "unihan_etl.expansion.expand_kUnihanCore2020",
          "level": 2,
          "text": "expand_kUnihanCore2020()"
        },
        {
          "id": "unihan_etl.expansion.kLocationDict",
          "level": 2,
          "text": "kLocationDict"
        },
        {
          "id": "unihan_etl.expansion.kLocationDict.volume",
          "level": 3,
          "text": "volume"
        },
        {
          "id": "unihan_etl.expansion.kLocationDict.page",
          "level": 3,
          "text": "page"
        },
        {
          "id": "unihan_etl.expansion.kLocationDict.character",
          "level": 3,
          "text": "character"
        },
        {
          "id": "unihan_etl.expansion.kLocationDict.virtual",
          "level": 3,
          "text": "virtual"
        },
        {
          "id": "unihan_etl.expansion.expand_kHanYu",
          "level": 2,
          "text": "expand_kHanYu()"
        },
        {
          "id": "unihan_etl.expansion.expand_kIRGHanyuDaZidian",
          "level": 2,
          "text": "expand_kIRGHanyuDaZidian()"
        },
        {
          "id": "unihan_etl.expansion.kTGHZ2013LocationDict",
          "level": 2,
          "text": "kTGHZ2013LocationDict"
        },
        {
          "id": "unihan_etl.expansion.kTGHZ2013LocationDict.page",
          "level": 3,
          "text": "page"
        },
        {
          "id": "unihan_etl.expansion.kTGHZ2013LocationDict.position",
          "level": 3,
          "text": "position"
        },
        {
          "id": "unihan_etl.expansion.kTGHZ2013LocationDict.entry_type",
          "level": 3,
          "text": "entry_type"
        },
        {
          "id": "unihan_etl.expansion.kTGHZ2013Dict",
          "level": 2,
          "text": "kTGHZ2013Dict"
        },
        {
          "id": "unihan_etl.expansion.kTGHZ2013Dict.reading",
          "level": 3,
          "text": "reading"
        },
        {
          "id": "unihan_etl.expansion.kTGHZ2013Dict.locations",
          "level": 3,
          "text": "locations"
        },
        {
          "id": "unihan_etl.expansion.expand_kTGHZ2013",
          "level": 2,
          "text": "expand_kTGHZ2013()"
        },
        {
          "id": "unihan_etl.expansion.kSMSZD2003IndexDict",
          "level": 2,
          "text": "kSMSZD2003IndexDict"
        },
        {
          "id": "unihan_etl.expansion.kSMSZD2003IndexDict.page",
          "level": 3,
          "text": "page"
        },
        {
          "id": "unihan_etl.expansion.kSMSZD2003IndexDict.position",
          "level": 3,
          "text": "position"
        },
        {
          "id": "unihan_etl.expansion.expand_kSMSZD2003Index",
          "level": 2,
          "text": "expand_kSMSZD2003Index()"
        },
        {
          "id": "unihan_etl.expansion.kSMSZD2003ReadingsDict",
          "level": 2,
          "text": "kSMSZD2003ReadingsDict"
        },
        {
          "id": "unihan_etl.expansion.kSMSZD2003ReadingsDict.mandarin",
          "level": 3,
          "text": "mandarin"
        },
        {
          "id": "unihan_etl.expansion.kSMSZD2003ReadingsDict.cantonese",
          "level": 3,
          "text": "cantonese"
        },
        {
          "id": "unihan_etl.expansion.expand_kSMSZD2003Readings",
          "level": 2,
          "text": "expand_kSMSZD2003Readings()"
        },
        {
          "id": "unihan_etl.expansion.kHanyuPinyinPreDict",
          "level": 2,
          "text": "kHanyuPinyinPreDict"
        },
        {
          "id": "unihan_etl.expansion.kHanyuPinyinPreDict.locations",
          "level": 3,
          "text": "locations"
        },
        {
          "id": "unihan_etl.expansion.kHanyuPinyinPreDict.readings",
          "level": 3,
          "text": "readings"
        },
        {
          "id": "unihan_etl.expansion.kHanyuPinyinDict",
          "level": 2,
          "text": "kHanyuPinyinDict"
        },
        {
          "id": "unihan_etl.expansion.kHanyuPinyinDict.locations",
          "level": 3,
          "text": "locations"
        },
        {
          "id": "unihan_etl.expansion.kHanyuPinyinDict.readings",
          "level": 3,
          "text": "readings"
        },
        {
          "id": "unihan_etl.expansion.expand_kHanyuPinyin",
          "level": 2,
          "text": "expand_kHanyuPinyin()"
        },
        {
          "id": "unihan_etl.expansion.kXHC1983LocationDict",
          "level": 2,
          "text": "kXHC1983LocationDict"
        },
        {
          "id": "unihan_etl.expansion.kXHC1983LocationDict.page",
          "level": 3,
          "text": "page"
        },
        {
          "id": "unihan_etl.expansion.kXHC1983LocationDict.character",
          "level": 3,
          "text": "character"
        },
        {
          "id": "unihan_etl.expansion.kXHC1983LocationDict.entry",
          "level": 3,
          "text": "entry"
        },
        {
          "id": "unihan_etl.expansion.kXHC1983LocationDict.substituted",
          "level": 3,
          "text": "substituted"
        },
        {
          "id": "unihan_etl.expansion.kXHC1983Dict",
          "level": 2,
          "text": "kXHC1983Dict"
        },
        {
          "id": "unihan_etl.expansion.kXHC1983Dict.locations",
          "level": 3,
          "text": "locations"
        },
        {
          "id": "unihan_etl.expansion.kXHC1983Dict.reading",
          "level": 3,
          "text": "reading"
        },
        {
          "id": "unihan_etl.expansion.kXHC1983PreDict",
          "level": 2,
          "text": "kXHC1983PreDict"
        },
        {
          "id": "unihan_etl.expansion.kXHC1983PreDict.locations",
          "level": 3,
          "text": "locations"
        },
        {
          "id": "unihan_etl.expansion.kXHC1983PreDict.reading",
          "level": 3,
          "text": "reading"
        },
        {
          "id": "unihan_etl.expansion.expand_kXHC1983",
          "level": 2,
          "text": "expand_kXHC1983()"
        },
        {
          "id": "unihan_etl.expansion.kCheungBauerDict",
          "level": 2,
          "text": "kCheungBauerDict"
        },
        {
          "id": "unihan_etl.expansion.kCheungBauerDict.radical",
          "level": 3,
          "text": "radical"
        },
        {
          "id": "unihan_etl.expansion.kCheungBauerDict.strokes",
          "level": 3,
          "text": "strokes"
        },
        {
          "id": "unihan_etl.expansion.kCheungBauerDict.cangjie",
          "level": 3,
          "text": "cangjie"
        },
        {
          "id": "unihan_etl.expansion.kCheungBauerDict.readings",
          "level": 3,
          "text": "readings"
        },
        {
          "id": "unihan_etl.expansion.expand_kCheungBauer",
          "level": 2,
          "text": "expand_kCheungBauer()"
        },
        {
          "id": "unihan_etl.expansion.kRSAdobe_Japan1_6Dict",
          "level": 2,
          "text": "kRSAdobe_Japan1_6Dict"
        },
        {
          "id": "unihan_etl.expansion.kRSAdobe_Japan1_6Dict.type",
          "level": 3,
          "text": "type"
        },
        {
          "id": "unihan_etl.expansion.kRSAdobe_Japan1_6Dict.cid",
          "level": 3,
          "text": "cid"
        },
        {
          "id": "unihan_etl.expansion.kRSAdobe_Japan1_6Dict.radical",
          "level": 3,
          "text": "radical"
        },
        {
          "id": "unihan_etl.expansion.kRSAdobe_Japan1_6Dict.strokes",
          "level": 3,
          "text": "strokes"
        },
        {
          "id": "unihan_etl.expansion.expand_kRSAdobe_Japan1_6",
          "level": 2,
          "text": "expand_kRSAdobe_Japan1_6()"
        },
        {
          "id": "unihan_etl.expansion.kCihaiTDict",
          "level": 2,
          "text": "kCihaiTDict"
        },
        {
          "id": "unihan_etl.expansion.kCihaiTDict.page",
          "level": 3,
          "text": "page"
        },
        {
          "id": "unihan_etl.expansion.kCihaiTDict.row",
          "level": 3,
          "text": "row"
        },
        {
          "id": "unihan_etl.expansion.kCihaiTDict.character",
          "level": 3,
          "text": "character"
        },
        {
          "id": "unihan_etl.expansion.expand_kCihaiT",
          "level": 2,
          "text": "expand_kCihaiT()"
        },
        {
          "id": "unihan_etl.expansion.kIICoreDict",
          "level": 2,
          "text": "kIICoreDict"
        },
        {
          "id": "unihan_etl.expansion.kIICoreDict.priority",
          "level": 3,
          "text": "priority"
        },
        {
          "id": "unihan_etl.expansion.kIICoreDict.sources",
          "level": 3,
          "text": "sources"
        },
        {
          "id": "unihan_etl.expansion.expand_kIICore",
          "level": 2,
          "text": "expand_kIICore()"
        },
        {
          "id": "unihan_etl.expansion.kDaeJaweonDict",
          "level": 2,
          "text": "kDaeJaweonDict"
        },
        {
          "id": "unihan_etl.expansion.kDaeJaweonDict.page",
          "level": 3,
          "text": "page"
        },
        {
          "id": "unihan_etl.expansion.kDaeJaweonDict.character",
          "level": 3,
          "text": "character"
        },
        {
          "id": "unihan_etl.expansion.kDaeJaweonDict.virtual",
          "level": 3,
          "text": "virtual"
        },
        {
          "id": "unihan_etl.expansion.expand_kDaeJaweon",
          "level": 2,
          "text": "expand_kDaeJaweon()"
        },
        {
          "id": "unihan_etl.expansion.expand_kIRGKangXi",
          "level": 2,
          "text": "expand_kIRGKangXi()"
        },
        {
          "id": "unihan_etl.expansion.expand_kIRGDaeJaweon",
          "level": 2,
          "text": "expand_kIRGDaeJaweon()"
        },
        {
          "id": "unihan_etl.expansion.kFennDict",
          "level": 2,
          "text": "kFennDict"
        },
        {
          "id": "unihan_etl.expansion.kFennDict.phonetic",
          "level": 3,
          "text": "phonetic"
        },
        {
          "id": "unihan_etl.expansion.kFennDict.frequency",
          "level": 3,
          "text": "frequency"
        },
        {
          "id": "unihan_etl.expansion.expand_kFenn",
          "level": 2,
          "text": "expand_kFenn()"
        },
        {
          "id": "unihan_etl.expansion.kHanyuPinluDict",
          "level": 2,
          "text": "kHanyuPinluDict"
        },
        {
          "id": "unihan_etl.expansion.kHanyuPinluDict.phonetic",
          "level": 3,
          "text": "phonetic"
        },
        {
          "id": "unihan_etl.expansion.kHanyuPinluDict.frequency",
          "level": 3,
          "text": "frequency"
        },
        {
          "id": "unihan_etl.expansion.expand_kHanyuPinlu",
          "level": 2,
          "text": "expand_kHanyuPinlu()"
        },
        {
          "id": "unihan_etl.expansion.LocationDict",
          "level": 2,
          "text": "LocationDict"
        },
        {
          "id": "unihan_etl.expansion.LocationDict.volume",
          "level": 3,
          "text": "volume"
        },
        {
          "id": "unihan_etl.expansion.LocationDict.page",
          "level": 3,
          "text": "page"
        },
        {
          "id": "unihan_etl.expansion.LocationDict.character",
          "level": 3,
          "text": "character"
        },
        {
          "id": "unihan_etl.expansion.LocationDict.virtual",
          "level": 3,
          "text": "virtual"
        },
        {
          "id": "unihan_etl.expansion.kHDZRadBreakDict",
          "level": 2,
          "text": "kHDZRadBreakDict"
        },
        {
          "id": "unihan_etl.expansion.kHDZRadBreakDict.radical",
          "level": 3,
          "text": "radical"
        },
        {
          "id": "unihan_etl.expansion.kHDZRadBreakDict.ucn",
          "level": 3,
          "text": "ucn"
        },
        {
          "id": "unihan_etl.expansion.kHDZRadBreakDict.location",
          "level": 3,
          "text": "location"
        },
        {
          "id": "unihan_etl.expansion.expand_kHDZRadBreak",
          "level": 2,
          "text": "expand_kHDZRadBreak()"
        },
        {
          "id": "unihan_etl.expansion.kSBGYDict",
          "level": 2,
          "text": "kSBGYDict"
        },
        {
          "id": "unihan_etl.expansion.kSBGYDict.page",
          "level": 3,
          "text": "page"
        },
        {
          "id": "unihan_etl.expansion.kSBGYDict.character",
          "level": 3,
          "text": "character"
        },
        {
          "id": "unihan_etl.expansion.expand_kSBGY",
          "level": 2,
          "text": "expand_kSBGY()"
        },
        {
          "id": "unihan_etl.expansion.kRSSimplifiedType",
          "level": 2,
          "text": "kRSSimplifiedType"
        },
        {
          "id": "unihan_etl.expansion.kRSSimplifiedType.Chinese",
          "level": 3,
          "text": "Chinese"
        },
        {
          "id": "unihan_etl.expansion.kRSSimplifiedType.NonChinese",
          "level": 3,
          "text": "NonChinese"
        },
        {
          "id": "unihan_etl.expansion.kRSSimplifiedType.SecondNonChinese",
          "level": 3,
          "text": "SecondNonChinese"
        },
        {
          "id": "unihan_etl.expansion.kRSGenericDict",
          "level": 2,
          "text": "kRSGenericDict"
        },
        {
          "id": "unihan_etl.expansion.kRSGenericDict.radical",
          "level": 3,
          "text": "radical"
        },
        {
          "id": "unihan_etl.expansion.kRSGenericDict.strokes",
          "level": 3,
          "text": "strokes"
        },
        {
          "id": "unihan_etl.expansion.kRSGenericDict.simplified",
          "level": 3,
          "text": "simplified"
        },
        {
          "id": "unihan_etl.expansion.get_krs_simplified_type",
          "level": 2,
          "text": "get_krs_simplified_type()"
        },
        {
          "id": "unihan_etl.expansion._expand_kRSGeneric",
          "level": 2,
          "text": "_expand_kRSGeneric()"
        },
        {
          "id": "unihan_etl.expansion.expand_kRSUnicode",
          "level": 2,
          "text": "expand_kRSUnicode()"
        },
        {
          "id": "unihan_etl.expansion.SourceLocationDict",
          "level": 2,
          "text": "SourceLocationDict"
        },
        {
          "id": "unihan_etl.expansion.SourceLocationDict.source",
          "level": 3,
          "text": "source"
        },
        {
          "id": "unihan_etl.expansion.SourceLocationDict.location",
          "level": 3,
          "text": "location"
        },
        {
          "id": "unihan_etl.expansion._expand_kIRG_GenericSource",
          "level": 2,
          "text": "_expand_kIRG_GenericSource()"
        },
        {
          "id": "unihan_etl.expansion.expand_kIRG_GSource",
          "level": 2,
          "text": "expand_kIRG_GSource()"
        },
        {
          "id": "unihan_etl.expansion.expand_kIRG_HSource",
          "level": 2,
          "text": "expand_kIRG_HSource()"
        },
        {
          "id": "unihan_etl.expansion.expand_kIRG_JSource",
          "level": 2,
          "text": "expand_kIRG_JSource()"
        },
        {
          "id": "unihan_etl.expansion.expand_kIRG_KPSource",
          "level": 2,
          "text": "expand_kIRG_KPSource()"
        },
        {
          "id": "unihan_etl.expansion.expand_kIRG_KSource",
          "level": 2,
          "text": "expand_kIRG_KSource()"
        },
        {
          "id": "unihan_etl.expansion.expand_kIRG_MSource",
          "level": 2,
          "text": "expand_kIRG_MSource()"
        },
        {
          "id": "unihan_etl.expansion.expand_kIRG_SSource",
          "level": 2,
          "text": "expand_kIRG_SSource()"
        },
        {
          "id": "unihan_etl.expansion.expand_kIRG_TSource",
          "level": 2,
          "text": "expand_kIRG_TSource()"
        },
        {
          "id": "unihan_etl.expansion.expand_kIRG_USource",
          "level": 2,
          "text": "expand_kIRG_USource()"
        },
        {
          "id": "unihan_etl.expansion.expand_kIRG_UKSource",
          "level": 2,
          "text": "expand_kIRG_UKSource()"
        },
        {
          "id": "unihan_etl.expansion.expand_kIRG_VSource",
          "level": 2,
          "text": "expand_kIRG_VSource()"
        },
        {
          "id": "unihan_etl.expansion.kGSRDict",
          "level": 2,
          "text": "kGSRDict"
        },
        {
          "id": "unihan_etl.expansion.kGSRDict.set",
          "level": 3,
          "text": "set"
        },
        {
          "id": "unihan_etl.expansion.kGSRDict.letter",
          "level": 3,
          "text": "letter"
        },
        {
          "id": "unihan_etl.expansion.kGSRDict.apostrophe",
          "level": 3,
          "text": "apostrophe"
        },
        {
          "id": "unihan_etl.expansion.expand_kGSR",
          "level": 2,
          "text": "expand_kGSR()"
        },
        {
          "id": "unihan_etl.expansion.kCheungBauerIndexDict",
          "level": 2,
          "text": "kCheungBauerIndexDict"
        },
        {
          "id": "unihan_etl.expansion.kCheungBauerIndexDict.page",
          "level": 3,
          "text": "page"
        },
        {
          "id": "unihan_etl.expansion.kCheungBauerIndexDict.character",
          "level": 3,
          "text": "character"
        },
        {
          "id": "unihan_etl.expansion.expand_kCheungBauerIndex",
          "level": 2,
          "text": "expand_kCheungBauerIndex()"
        },
        {
          "id": "unihan_etl.expansion.expand_kFennIndex",
          "level": 2,
          "text": "expand_kFennIndex()"
        },
        {
          "id": "unihan_etl.expansion.kStrangeDict",
          "level": 2,
          "text": "kStrangeDict"
        },
        {
          "id": "unihan_etl.expansion.kStrangeDict.property_type",
          "level": 3,
          "text": "property_type"
        },
        {
          "id": "unihan_etl.expansion.kStrangeDict.characters",
          "level": 3,
          "text": "characters"
        },
        {
          "id": "unihan_etl.expansion.is_valid_kstrange_property",
          "level": 2,
          "text": "is_valid_kstrange_property()"
        },
        {
          "id": "unihan_etl.expansion.expand_kStrange",
          "level": 2,
          "text": "expand_kStrange()"
        },
        {
          "id": "unihan_etl.expansion.kMojiJohoVariationDict",
          "level": 2,
          "text": "kMojiJohoVariationDict"
        },
        {
          "id": "unihan_etl.expansion.kMojiJohoVariationDict.serial_number",
          "level": 3,
          "text": "serial_number"
        },
        {
          "id": "unihan_etl.expansion.kMojiJohoVariationDict.variation_sequence",
          "level": 3,
          "text": "variation_sequence"
        },
        {
          "id": "unihan_etl.expansion.kMojiJohoVariationDict.standard",
          "level": 3,
          "text": "standard"
        },
        {
          "id": "unihan_etl.expansion.kMojiJohoDict",
          "level": 2,
          "text": "kMojiJohoDict"
        },
        {
          "id": "unihan_etl.expansion.kMojiJohoDict.serial_number",
          "level": 3,
          "text": "serial_number"
        },
        {
          "id": "unihan_etl.expansion.kMojiJohoDict.variants",
          "level": 3,
          "text": "variants"
        },
        {
          "id": "unihan_etl.expansion.expand_kMojiJoho",
          "level": 2,
          "text": "expand_kMojiJoho()"
        },
        {
          "id": "unihan_etl.expansion.kFanqieDict",
          "level": 2,
          "text": "kFanqieDict"
        },
        {
          "id": "unihan_etl.expansion.kFanqieDict.initial",
          "level": 3,
          "text": "initial"
        },
        {
          "id": "unihan_etl.expansion.kFanqieDict.final",
          "level": 3,
          "text": "final"
        },
        {
          "id": "unihan_etl.expansion.expand_kFanqie",
          "level": 2,
          "text": "expand_kFanqie()"
        },
        {
          "id": "unihan_etl.expansion.kZhuangDict",
          "level": 2,
          "text": "kZhuangDict"
        },
        {
          "id": "unihan_etl.expansion.kZhuangDict.reading",
          "level": 3,
          "text": "reading"
        },
        {
          "id": "unihan_etl.expansion.kZhuangDict.non_standard",
          "level": 3,
          "text": "non_standard"
        },
        {
          "id": "unihan_etl.expansion.expand_kZhuang",
          "level": 2,
          "text": "expand_kZhuang()"
        },
        {
          "id": "unihan_etl.expansion.expand_field",
          "level": 2,
          "text": "expand_field()"
        }
      ]
    },
    {
      "title": "API Reference",
      "description": "ETL pipeline and Packager: download, normalize, export.",
      "section": "Documentation",
      "url": "/api/",
      "markdownUrl": "/api/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "API Reference"
        },
        {
          "id": "core-modules",
          "level": 2,
          "text": "Core Modules"
        },
        {
          "id": "test-utilities",
          "level": 2,
          "text": "Test Utilities"
        }
      ]
    },
    {
      "title": "Options - unihan_etl.options",
      "description": "Configuration for the unihan-etl package.",
      "section": "Documentation",
      "url": "/api/options/",
      "markdownUrl": "/api/options.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Options - unihan_etl.options"
        },
        {
          "id": "unihan_etl.options.Options",
          "level": 2,
          "text": "Options"
        },
        {
          "id": "unihan_etl.options.Options.source",
          "level": 3,
          "text": "source"
        },
        {
          "id": "unihan_etl.options.Options.destination",
          "level": 3,
          "text": "destination"
        },
        {
          "id": "unihan_etl.options.Options.zip_path",
          "level": 3,
          "text": "zip_path"
        },
        {
          "id": "unihan_etl.options.Options.work_dir",
          "level": 3,
          "text": "work_dir"
        },
        {
          "id": "unihan_etl.options.Options.fields",
          "level": 3,
          "text": "fields"
        },
        {
          "id": "unihan_etl.options.Options.format",
          "level": 3,
          "text": "format"
        },
        {
          "id": "unihan_etl.options.Options.input_files",
          "level": 3,
          "text": "input_files"
        },
        {
          "id": "unihan_etl.options.Options.download",
          "level": 3,
          "text": "download"
        },
        {
          "id": "unihan_etl.options.Options.expand",
          "level": 3,
          "text": "expand"
        },
        {
          "id": "unihan_etl.options.Options.prune_empty",
          "level": 3,
          "text": "prune_empty"
        },
        {
          "id": "unihan_etl.options.Options.cache",
          "level": 3,
          "text": "cache"
        },
        {
          "id": "unihan_etl.options.Options.log_level",
          "level": 3,
          "text": "log_level"
        },
        {
          "id": "unihan_etl.options.Options.__init__",
          "level": 3,
          "text": "__init__()"
        }
      ]
    },
    {
      "title": "pytest plugin",
      "description": "unihan-etl ships a pytest plugin that downloads UNIHAN.zip once and reuses it across tests, plus an isolated home directory for cache and config setup. The plugin auto-discovers via the pytest11 en...",
      "section": "Documentation",
      "url": "/api/pytest-plugin/",
      "markdownUrl": "/api/pytest-plugin.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "pytest plugin"
        },
        {
          "id": "quick-start",
          "level": 2,
          "text": "Quick Start"
        },
        {
          "id": "which-fixture-do-i-need",
          "level": 2,
          "text": "Which Fixture Do I Need?"
        },
        {
          "id": "dataset-bootstrap",
          "level": 2,
          "text": "Dataset Bootstrap"
        },
        {
          "id": "unihan_etl.pytest_plugin.unihan_quick_packager",
          "level": 3,
          "text": "unihan_quick_packager"
        },
        {
          "id": "unihan_etl.pytest_plugin.unihan_full_packager",
          "level": 3,
          "text": "unihan_full_packager"
        },
        {
          "id": "unihan_etl.pytest_plugin.unihan_ensure_quick",
          "level": 3,
          "text": "unihan_ensure_quick"
        },
        {
          "id": "unihan_etl.pytest_plugin.unihan_ensure_full",
          "level": 3,
          "text": "unihan_ensure_full"
        },
        {
          "id": "unihan_etl.pytest_plugin.unihan_bootstrap_all",
          "level": 3,
          "text": "unihan_bootstrap_all"
        },
        {
          "id": "dataset-options-paths",
          "level": 2,
          "text": "Dataset Options & Paths"
        },
        {
          "id": "unihan_etl.pytest_plugin.unihan_quick_options",
          "level": 3,
          "text": "unihan_quick_options"
        },
        {
          "id": "unihan_etl.pytest_plugin.unihan_full_options",
          "level": 3,
          "text": "unihan_full_options"
        },
        {
          "id": "unihan_etl.pytest_plugin.unihan_quick_path",
          "level": 3,
          "text": "unihan_quick_path"
        },
        {
          "id": "unihan_etl.pytest_plugin.unihan_full_path",
          "level": 3,
          "text": "unihan_full_path"
        },
        {
          "id": "unihan_etl.pytest_plugin.unihan_quick_zip_path",
          "level": 3,
          "text": "unihan_quick_zip_path"
        },
        {
          "id": "unihan_etl.pytest_plugin.unihan_quick_zip",
          "level": 3,
          "text": "unihan_quick_zip"
        },
        {
          "id": "raw-data-accessors",
          "level": 2,
          "text": "Raw Data Accessors"
        },
        {
          "id": "unihan_etl.pytest_plugin.unihan_quick_data",
          "level": 3,
          "text": "unihan_quick_data"
        },
        {
          "id": "unihan_etl.pytest_plugin.unihan_quick_fixture_files",
          "level": 3,
          "text": "unihan_quick_fixture_files"
        },
        {
          "id": "unihan_etl.pytest_plugin.unihan_quick_columns",
          "level": 3,
          "text": "unihan_quick_columns"
        },
        {
          "id": "unihan_etl.pytest_plugin.unihan_quick_normalized_data",
          "level": 3,
          "text": "unihan_quick_normalized_data"
        },
        {
          "id": "unihan_etl.pytest_plugin.unihan_quick_expanded_data",
          "level": 3,
          "text": "unihan_quick_expanded_data"
        },
        {
          "id": "mock-zip-fixtures",
          "level": 2,
          "text": "Mock Zip Fixtures"
        },
        {
          "id": "unihan_etl.pytest_plugin.unihan_mock_zip",
          "level": 3,
          "text": "unihan_mock_zip"
        },
        {
          "id": "unihan_etl.pytest_plugin.unihan_mock_zip_path",
          "level": 3,
          "text": "unihan_mock_zip_path"
        },
        {
          "id": "unihan_etl.pytest_plugin.unihan_mock_zip_pathname",
          "level": 3,
          "text": "unihan_mock_zip_pathname"
        },
        {
          "id": "unihan_etl.pytest_plugin.unihan_mock_test_dir",
          "level": 3,
          "text": "unihan_mock_test_dir"
        },
        {
          "id": "cache-paths-override-hooks",
          "level": 2,
          "text": "Cache Paths (Override Hooks)"
        },
        {
          "id": "unihan_etl.pytest_plugin.unihan_user_cache_path",
          "level": 3,
          "text": "unihan_user_cache_path"
        },
        {
          "id": "unihan_etl.pytest_plugin.unihan_project_cache_path",
          "level": 3,
          "text": "unihan_project_cache_path"
        },
        {
          "id": "unihan_etl.pytest_plugin.unihan_cache_path",
          "level": 3,
          "text": "unihan_cache_path"
        },
        {
          "id": "unihan_etl.pytest_plugin.unihan_fixture_root",
          "level": 3,
          "text": "unihan_fixture_root"
        },
        {
          "id": "home-user-environment",
          "level": 2,
          "text": "Home & User Environment"
        },
        {
          "id": "unihan_etl.pytest_plugin.unihan_home_path",
          "level": 3,
          "text": "unihan_home_path"
        },
        {
          "id": "unihan_etl.pytest_plugin.unihan_home_user_name",
          "level": 3,
          "text": "unihan_home_user_name"
        },
        {
          "id": "unihan_etl.pytest_plugin.unihan_user_path",
          "level": 3,
          "text": "unihan_user_path"
        },
        {
          "id": "unihan_etl.pytest_plugin.unihan_zshrc",
          "level": 3,
          "text": "unihan_zshrc"
        },
        {
          "id": "function-scoped-helpers",
          "level": 2,
          "text": "Function-Scoped Helpers"
        },
        {
          "id": "unihan_etl.pytest_plugin.unihan_test_options",
          "level": 3,
          "text": "unihan_test_options"
        },
        {
          "id": "types",
          "level": 2,
          "text": "Types"
        },
        {
          "id": "unihan_etl.pytest_plugin.UnihanTestOptions",
          "level": 3,
          "text": "UnihanTestOptions"
        },
        {
          "id": "configuration",
          "level": 2,
          "text": "Configuration"
        },
        {
          "id": "confval-pytest_fixture_hidden_dependencies",
          "level": 3,
          "text": "pytest_fixture_hidden_dependencies"
        },
        {
          "id": "confval-pytest_fixture_builtin_links",
          "level": 3,
          "text": "pytest_fixture_builtin_links"
        },
        {
          "id": "confval-pytest_external_fixture_links",
          "level": 3,
          "text": "pytest_external_fixture_links"
        }
      ]
    },
    {
      "title": "Test helpers - unihan_etl.test",
      "description": "Test helpers functions for downloading and processing Unihan data.",
      "section": "Documentation",
      "url": "/api/test/",
      "markdownUrl": "/api/test.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Test helpers - unihan_etl.test"
        },
        {
          "id": "unihan_etl.test.assert_dict_contains_subset",
          "level": 2,
          "text": "assert_dict_contains_subset()"
        }
      ]
    },
    {
      "title": "Typings - unihan_etl.types",
      "description": "Typings for unihan-etl.",
      "section": "Documentation",
      "url": "/api/types/",
      "markdownUrl": "/api/types.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Typings - unihan_etl.types"
        },
        {
          "id": "unihan_etl.types.StrPath",
          "level": 2,
          "text": "StrPath"
        },
        {
          "id": "unihan_etl.types.ColumnData",
          "level": 2,
          "text": "ColumnData"
        },
        {
          "id": "unihan_etl.types.UntypedNormalizedData",
          "level": 2,
          "text": "UntypedNormalizedData"
        },
        {
          "id": "unihan_etl.types.ExpandedExport",
          "level": 2,
          "text": "ExpandedExport"
        },
        {
          "id": "unihan_etl.types.Options",
          "level": 2,
          "text": "Options"
        },
        {
          "id": "unihan_etl.types.Options.source",
          "level": 3,
          "text": "source"
        },
        {
          "id": "unihan_etl.types.Options.destination",
          "level": 3,
          "text": "destination"
        },
        {
          "id": "unihan_etl.types.Options.zip_path",
          "level": 3,
          "text": "zip_path"
        },
        {
          "id": "unihan_etl.types.Options.work_dir",
          "level": 3,
          "text": "work_dir"
        },
        {
          "id": "unihan_etl.types.Options.fields",
          "level": 3,
          "text": "fields"
        },
        {
          "id": "unihan_etl.types.Options.format",
          "level": 3,
          "text": "format"
        },
        {
          "id": "unihan_etl.types.Options.input_files",
          "level": 3,
          "text": "input_files"
        },
        {
          "id": "unihan_etl.types.Options.download",
          "level": 3,
          "text": "download"
        },
        {
          "id": "unihan_etl.types.Options.expand",
          "level": 3,
          "text": "expand"
        },
        {
          "id": "unihan_etl.types.Options.prune_empty",
          "level": 3,
          "text": "prune_empty"
        },
        {
          "id": "unihan_etl.types.Options.cache",
          "level": 3,
          "text": "cache"
        },
        {
          "id": "unihan_etl.types.Options.log_level",
          "level": 3,
          "text": "log_level"
        },
        {
          "id": "unihan_etl.types.Options.__init__",
          "level": 3,
          "text": "__init__()"
        },
        {
          "id": "unihan_etl.types.ReportHookFn",
          "level": 2,
          "text": "ReportHookFn"
        },
        {
          "id": "unihan_etl.types.ReportHookFn.__init__",
          "level": 3,
          "text": "__init__()"
        },
        {
          "id": "unihan_etl.types.ReportHookFn._abc_impl",
          "level": 3,
          "text": "_abc_impl"
        },
        {
          "id": "unihan_etl.types.ReportHookFn._is_protocol",
          "level": 3,
          "text": "_is_protocol"
        },
        {
          "id": "unihan_etl.types.UrlRetrieveFn",
          "level": 2,
          "text": "UrlRetrieveFn"
        },
        {
          "id": "unihan_etl.types.UrlRetrieveFn.__init__",
          "level": 3,
          "text": "__init__()"
        },
        {
          "id": "unihan_etl.types.UrlRetrieveFn._abc_impl",
          "level": 3,
          "text": "_abc_impl"
        },
        {
          "id": "unihan_etl.types.UrlRetrieveFn._is_protocol",
          "level": 3,
          "text": "_is_protocol"
        }
      ]
    },
    {
      "title": "Utilities - unihan_etl.util",
      "description": "Utilities for parsing UNIHAN’s data and structures.",
      "section": "Documentation",
      "url": "/api/utils/",
      "markdownUrl": "/api/utils.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Utilities - unihan_etl.util"
        },
        {
          "id": "unihan_etl.util.ucn_to_unicode",
          "level": 2,
          "text": "ucn_to_unicode()"
        },
        {
          "id": "unihan_etl.util.ucnstring_to_python",
          "level": 2,
          "text": "ucnstring_to_python()"
        },
        {
          "id": "unihan_etl.util.ucnstring_to_unicode",
          "level": 2,
          "text": "ucnstring_to_unicode()"
        },
        {
          "id": "unihan_etl.util._dl_progress",
          "level": 2,
          "text": "_dl_progress()"
        },
        {
          "id": "unihan_etl.util.merge_dict",
          "level": 2,
          "text": "merge_dict()"
        },
        {
          "id": "unihan_etl.util.get_fields",
          "level": 2,
          "text": "get_fields()"
        }
      ]
    },
    {
      "title": "unihan-etl download",
      "description": "Download and cache the UNIHAN database without exporting.",
      "section": "Documentation",
      "url": "/cli/download/",
      "markdownUrl": "/cli/download.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "unihan-etl download"
        },
        {
          "id": "command",
          "level": 2,
          "text": "Command"
        },
        {
          "id": "download-usage",
          "level": 3,
          "text": "Usage"
        },
        {
          "id": "download-examples",
          "level": 3,
          "text": "Examples"
        },
        {
          "id": "download-options",
          "level": 3,
          "text": "Options"
        },
        {
          "id": "examples",
          "level": 2,
          "text": "Examples"
        }
      ]
    },
    {
      "title": "unihan-etl export",
      "description": "Export UNIHAN data to CSV, JSON, or YAML format.",
      "section": "Documentation",
      "url": "/cli/export/",
      "markdownUrl": "/cli/export.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "unihan-etl export"
        },
        {
          "id": "command",
          "level": 2,
          "text": "Command"
        },
        {
          "id": "export-usage",
          "level": 3,
          "text": "Usage"
        },
        {
          "id": "export-examples",
          "level": 3,
          "text": "Examples"
        },
        {
          "id": "format",
          "level": 4,
          "text": "Format"
        },
        {
          "id": "export-options",
          "level": 3,
          "text": "Options"
        },
        {
          "id": "examples",
          "level": 2,
          "text": "Examples"
        }
      ]
    },
    {
      "title": "unihan-etl fields",
      "description": "List available UNIHAN fields with their descriptions and source files.",
      "section": "Documentation",
      "url": "/cli/fields/",
      "markdownUrl": "/cli/fields.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "unihan-etl fields"
        },
        {
          "id": "command",
          "level": 2,
          "text": "Command"
        },
        {
          "id": "fields-usage",
          "level": 3,
          "text": "Usage"
        },
        {
          "id": "fields-examples",
          "level": 3,
          "text": "Examples"
        },
        {
          "id": "fields-options",
          "level": 3,
          "text": "Options"
        },
        {
          "id": "examples",
          "level": 2,
          "text": "Examples"
        }
      ]
    },
    {
      "title": "unihan-etl files",
      "description": "List available UNIHAN source files.",
      "section": "Documentation",
      "url": "/cli/files/",
      "markdownUrl": "/cli/files.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "unihan-etl files"
        },
        {
          "id": "command",
          "level": 2,
          "text": "Command"
        },
        {
          "id": "files-usage",
          "level": 3,
          "text": "Usage"
        },
        {
          "id": "files-examples",
          "level": 3,
          "text": "Examples"
        },
        {
          "id": "files-options",
          "level": 3,
          "text": "Options"
        },
        {
          "id": "examples",
          "level": 2,
          "text": "Examples"
        }
      ]
    },
    {
      "title": "CLI Reference",
      "description": "Download and cache the UNIHAN database.",
      "section": "Documentation",
      "url": "/cli/",
      "markdownUrl": "/cli/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "CLI Reference"
        },
        {
          "id": "main-command",
          "level": 2,
          "text": "Main command"
        },
        {
          "id": "command",
          "level": 3,
          "text": "Command"
        },
        {
          "id": "usage",
          "level": 4,
          "text": "Usage"
        },
        {
          "id": "index-examples",
          "level": 4,
          "text": "Examples"
        },
        {
          "id": "options",
          "level": 4,
          "text": "Options"
        },
        {
          "id": "global-options",
          "level": 2,
          "text": "Global Options"
        },
        {
          "id": "output-formats",
          "level": 2,
          "text": "Output Formats"
        }
      ]
    },
    {
      "title": "unihan-etl search",
      "description": "Look up character data in the UNIHAN database.",
      "section": "Documentation",
      "url": "/cli/search/",
      "markdownUrl": "/cli/search.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "unihan-etl search"
        },
        {
          "id": "command",
          "level": 2,
          "text": "Command"
        },
        {
          "id": "search-usage",
          "level": 3,
          "text": "Usage"
        },
        {
          "id": "search-examples",
          "level": 3,
          "text": "Examples"
        },
        {
          "id": "output-format",
          "level": 4,
          "text": "Output Format"
        },
        {
          "id": "field-filtering",
          "level": 4,
          "text": "Field Filtering"
        },
        {
          "id": "search-positional-arguments",
          "level": 3,
          "text": "Positional Arguments"
        },
        {
          "id": "search-options",
          "level": 3,
          "text": "Options"
        },
        {
          "id": "examples",
          "level": 2,
          "text": "Examples"
        }
      ]
    },
    {
      "title": "Changelog",
      "description": "To install the unreleased unihan-etl version, see developmental releases.",
      "section": "Documentation",
      "url": "/history/",
      "markdownUrl": "/history.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Changelog"
        },
        {
          "id": "unihan-etl-0-42-x-unreleased",
          "level": 2,
          "text": "unihan-etl 0.42.x (unreleased)"
        },
        {
          "id": "what-s-new",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "shared-gp-sphinx-documentation-platform-351-354-355-356",
          "level": 4,
          "text": "Shared gp-sphinx documentation platform (#351, #354, #355, #356)"
        },
        {
          "id": "generated-pytest-plugin-reference-352-353",
          "level": 4,
          "text": "Generated pytest plugin reference (#352, #353)"
        },
        {
          "id": "fixes",
          "level": 3,
          "text": "Fixes"
        },
        {
          "id": "theme-preference-no-longer-flashes-on-first-paint-357",
          "level": 4,
          "text": "Theme preference no longer flashes on first paint (#357)"
        },
        {
          "id": "development",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-etl-0-41-0-2026-03-21",
          "level": 2,
          "text": "unihan-etl 0.41.0 (2026-03-21)"
        },
        {
          "id": "documentation",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "linkable-cli-argument-definitions-347",
          "level": 4,
          "text": "Linkable CLI argument definitions (#347)"
        },
        {
          "id": "more-robust-help-text-rendering-347",
          "level": 4,
          "text": "More robust help text rendering (#347)"
        },
        {
          "id": "faster-steadier-documentation-pages-349",
          "level": 4,
          "text": "Faster, steadier documentation pages (#349)"
        },
        {
          "id": "unihan-etl-0-40-0-2026-01-24",
          "level": 2,
          "text": "unihan-etl 0.40.0 (2026-01-24)"
        },
        {
          "id": "breaking-changes",
          "level": 3,
          "text": "Breaking changes"
        },
        {
          "id": "bare-unihan-etl-now-shows-help-344",
          "level": 4,
          "text": "Bare unihan-etl now shows help (#344)"
        },
        {
          "id": "id1",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "subcommands-for-each-user-workflow-344",
          "level": 4,
          "text": "Subcommands for each user workflow (#344)"
        },
        {
          "id": "modern-help-and-path-output-344",
          "level": 4,
          "text": "Modern help and path output (#344)"
        },
        {
          "id": "id2",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "dedicated-cli-reference-pages-344",
          "level": 4,
          "text": "Dedicated CLI reference pages (#344)"
        },
        {
          "id": "custom-argparse-documentation-extensions-344",
          "level": 4,
          "text": "Custom argparse documentation extensions (#344)"
        },
        {
          "id": "id3",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-etl-0-39-1-2026-01-24",
          "level": 2,
          "text": "unihan-etl 0.39.1 (2026-01-24)"
        },
        {
          "id": "id4",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "pypi-trusted-publisher-339",
          "level": 4,
          "text": "PyPI Trusted Publisher (#339)"
        },
        {
          "id": "unihan-etl-0-39-0-2026-01-11",
          "level": 2,
          "text": "unihan-etl 0.39.0 (2026-01-11)"
        },
        {
          "id": "id5",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "unicode-16-0-and-17-0-field-updates-343",
          "level": 4,
          "text": "Unicode 16.0 and 17.0 field updates (#343)"
        },
        {
          "id": "id6",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "id7",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "justfile-task-runner-340",
          "level": 4,
          "text": "Justfile task runner (#340)"
        },
        {
          "id": "unihan-etl-0-38-0-2025-11-01",
          "level": 2,
          "text": "unihan-etl 0.38.0 (2025-11-01)"
        },
        {
          "id": "id8",
          "level": 3,
          "text": "Breaking changes"
        },
        {
          "id": "python-3-9-support-dropped-338",
          "level": 4,
          "text": "Python 3.9 support dropped (#338)"
        },
        {
          "id": "id9",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "python-3-14-support-337",
          "level": 4,
          "text": "Python 3.14 support (#337)"
        },
        {
          "id": "deferred-annotations-333",
          "level": 4,
          "text": "Deferred annotations (#333)"
        },
        {
          "id": "unihan-etl-0-37-0-2024-12-21",
          "level": 2,
          "text": "unihan-etl 0.37.0 (2024-12-21)"
        },
        {
          "id": "id10",
          "level": 3,
          "text": "Breaking changes"
        },
        {
          "id": "python-3-8-support-dropped-332",
          "level": 4,
          "text": "Python 3.8 support dropped (#332)"
        },
        {
          "id": "id11",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "python-3-9-lint-modernization-332",
          "level": 4,
          "text": "Python 3.9 lint modernization (#332)"
        },
        {
          "id": "unihan-etl-0-36-0-2024-11-26",
          "level": 2,
          "text": "unihan-etl 0.36.0 (2024-11-26)"
        },
        {
          "id": "id12",
          "level": 3,
          "text": "Breaking changes"
        },
        {
          "id": "project-management-moved-from-poetry-to-uv-329",
          "level": 4,
          "text": "Project management moved from Poetry to uv (#329)"
        },
        {
          "id": "build-backend-moved-from-poetry-to-hatchling-329",
          "level": 4,
          "text": "Build backend moved from Poetry to hatchling (#329)"
        },
        {
          "id": "unihan-etl-0-35-0-2024-11-25",
          "level": 2,
          "text": "unihan-etl 0.35.0 (2024-11-25)"
        },
        {
          "id": "id13",
          "level": 3,
          "text": "Breaking changes"
        },
        {
          "id": "kfrequency-removed-330",
          "level": 4,
          "text": "kFrequency removed (#330)"
        },
        {
          "id": "id14",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "kfanqie-and-kzhuang-support-330",
          "level": 4,
          "text": "kFanqie and kZhuang support (#330)"
        },
        {
          "id": "krsunicode-apostrophe-forms-330",
          "level": 4,
          "text": "kRSUnicode apostrophe forms (#330)"
        },
        {
          "id": "id15",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "id16",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-etl-0-34-0-2024-03-24",
          "level": 2,
          "text": "unihan-etl 0.34.0 (2024-03-24)"
        },
        {
          "id": "id17",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "aggressive-ruff-cleanup-317",
          "level": 4,
          "text": "Aggressive Ruff cleanup (#317)"
        },
        {
          "id": "dependency-updates-316",
          "level": 4,
          "text": "Dependency updates (#316)"
        },
        {
          "id": "unihan-etl-0-33-1-2024-02-09",
          "level": 2,
          "text": "unihan-etl 0.33.1 (2024-02-09)"
        },
        {
          "id": "id18",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "unihan-etl-0-33-0-2024-02-09",
          "level": 2,
          "text": "unihan-etl 0.33.0 (2024-02-09)"
        },
        {
          "id": "id19",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "quoted-csv-example-highlighting-314",
          "level": 4,
          "text": "Quoted CSV example highlighting (#314)"
        },
        {
          "id": "id20",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "stricter-ruff-rule-set-313",
          "level": 4,
          "text": "Stricter Ruff rule set (#313)"
        },
        {
          "id": "unihan-etl-0-32-0-2024-02-05",
          "level": 2,
          "text": "unihan-etl 0.32.0 (2024-02-05)"
        },
        {
          "id": "id21",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "csv-and-tsv-example-highlighting-253",
          "level": 4,
          "text": "CSV and TSV example highlighting (#253)"
        },
        {
          "id": "ktghz2013-typing-and-examples-312",
          "level": 4,
          "text": "kTGHZ2013 typing and examples (#312)"
        },
        {
          "id": "id22",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-etl-0-31-0-2024-02-04",
          "level": 2,
          "text": "unihan-etl 0.31.0 (2024-02-04)"
        },
        {
          "id": "id23",
          "level": 3,
          "text": "Breaking changes"
        },
        {
          "id": "unihan-compatibility-moved-to-15-1-309",
          "level": 4,
          "text": "UNIHAN compatibility moved to 15.1 (#309)"
        },
        {
          "id": "id24",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "new-fields-from-unicode-13-0-through-15-1-309",
          "level": 4,
          "text": "New fields from Unicode 13.0 through 15.1 (#309)"
        },
        {
          "id": "id25",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-etl-0-30-1-2023-12-10",
          "level": 2,
          "text": "unihan-etl 0.30.1 (2023-12-10)"
        },
        {
          "id": "id26",
          "level": 3,
          "text": "Fixes"
        },
        {
          "id": "double-apostrophes-in-krsunicode-values-304",
          "level": 4,
          "text": "Double apostrophes in kRSUnicode values (#304)"
        },
        {
          "id": "unihan-etl-0-30-0post0-2023-11-26",
          "level": 2,
          "text": "unihan-etl 0.30.0post0 (2023-11-26)"
        },
        {
          "id": "id27",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "id28",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-etl-0-30-0-2023-11-26",
          "level": 2,
          "text": "unihan-etl 0.30.0 (2023-11-26)"
        },
        {
          "id": "id29",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "numpy-style-docstrings-303",
          "level": 4,
          "text": "NumPy-style docstrings (#303)"
        },
        {
          "id": "id30",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-etl-0-29-0-2023-11-19",
          "level": 2,
          "text": "unihan-etl 0.29.0 (2023-11-19)"
        },
        {
          "id": "id31",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "pytest-configuration-moved-to-pyproject-toml-299",
          "level": 4,
          "text": "Pytest configuration moved to pyproject.toml (#299)"
        },
        {
          "id": "formatting-moved-from-black-to-ruff-302",
          "level": 4,
          "text": "Formatting moved from Black to Ruff (#302)"
        },
        {
          "id": "poetry-dependency-groups-corrected-302",
          "level": 4,
          "text": "Poetry dependency groups corrected (#302)"
        },
        {
          "id": "unihan-etl-0-28-1-2023-09-02",
          "level": 2,
          "text": "unihan-etl 0.28.1 (2023-09-02)"
        },
        {
          "id": "id32",
          "level": 3,
          "text": "Fixes"
        },
        {
          "id": "kaccountingnumeric-list-handling-296",
          "level": 4,
          "text": "kAccountingNumeric list handling (#296)"
        },
        {
          "id": "id33",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-etl-0-28-0-2023-07-22",
          "level": 2,
          "text": "unihan-etl 0.28.0 (2023-07-22)"
        },
        {
          "id": "id34",
          "level": 3,
          "text": "Breaking changes"
        },
        {
          "id": "pytest-fixtures-now-use-the-unihan-prefix-296",
          "level": 4,
          "text": "Pytest fixtures now use the unihan_ prefix (#296)"
        },
        {
          "id": "id35",
          "level": 3,
          "text": "Fixes"
        },
        {
          "id": "unihan-etl-0-27-0-2023-07-18",
          "level": 2,
          "text": "unihan-etl 0.27.0 (2023-07-18)"
        },
        {
          "id": "id36",
          "level": 3,
          "text": "Breaking changes"
        },
        {
          "id": "quick-fixture-data-moved-into-package-data-294",
          "level": 4,
          "text": "Quick fixture data moved into package data (#294)"
        },
        {
          "id": "sample-fixture-names-became-quick-fixture-names-294",
          "level": 4,
          "text": "Sample fixture names became quick fixture names (#294)"
        },
        {
          "id": "id37",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-etl-0-26-0-2023-07-09",
          "level": 2,
          "text": "unihan-etl 0.26.0 (2023-07-09)"
        },
        {
          "id": "id38",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "cached-quick-and-full-unihan-fixtures-291",
          "level": 4,
          "text": "Cached quick and full UNIHAN fixtures (#291)"
        },
        {
          "id": "unihan-etl-0-25-2-2023-07-08",
          "level": 2,
          "text": "unihan-etl 0.25.2 (2023-07-08)"
        },
        {
          "id": "id39",
          "level": 3,
          "text": "Fixes"
        },
        {
          "id": "unihan-etl-0-25-1-2023-07-08",
          "level": 2,
          "text": "unihan-etl 0.25.1 (2023-07-08)"
        },
        {
          "id": "id40",
          "level": 3,
          "text": "Fixes"
        },
        {
          "id": "unihan-etl-0-25-0-2023-07-01",
          "level": 2,
          "text": "unihan-etl 0.25.0 (2023-07-01)"
        },
        {
          "id": "id41",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-etl-0-24-0-2023-06-24",
          "level": 2,
          "text": "unihan-etl 0.24.0 (2023-06-24)"
        },
        {
          "id": "dependencies",
          "level": 3,
          "text": "Dependencies"
        },
        {
          "id": "zhon-2-0-289",
          "level": 4,
          "text": "zhon 2.0 (#289)"
        },
        {
          "id": "unihan-etl-0-23-0-2023-06-24",
          "level": 2,
          "text": "unihan-etl 0.23.0 (2023-06-24)"
        },
        {
          "id": "id42",
          "level": 3,
          "text": "Breaking changes"
        },
        {
          "id": "app-dirs-moved-under-internal-287",
          "level": 4,
          "text": "app_dirs moved under _internal (#287)"
        },
        {
          "id": "id43",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "configurable-app-directories-287",
          "level": 4,
          "text": "Configurable app directories (#287)"
        },
        {
          "id": "id44",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "unihan-etl-0-22-1-2023-06-18",
          "level": 2,
          "text": "unihan-etl 0.22.1 (2023-06-18)"
        },
        {
          "id": "id45",
          "level": 3,
          "text": "Fixes"
        },
        {
          "id": "unihan-etl-0-22-0-2023-06-17",
          "level": 2,
          "text": "unihan-etl 0.22.0 (2023-06-17)"
        },
        {
          "id": "id46",
          "level": 3,
          "text": "Breaking changes"
        },
        {
          "id": "processing-module-renamed-to-core-284",
          "level": 4,
          "text": "Processing module renamed to core (#284)"
        },
        {
          "id": "configuration-moved-to-options-280",
          "level": 4,
          "text": "Configuration moved to Options (#280)"
        },
        {
          "id": "id47",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "unihan-etl-0-21-1-2023-06-18",
          "level": 2,
          "text": "unihan-etl 0.21.1 (2023-06-18)"
        },
        {
          "id": "id48",
          "level": 3,
          "text": "Fixes"
        },
        {
          "id": "unihan-etl-0-21-0-2023-06-12",
          "level": 2,
          "text": "unihan-etl 0.21.0 (2023-06-12)"
        },
        {
          "id": "id49",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-etl-0-20-0-2023-06-11",
          "level": 2,
          "text": "unihan-etl 0.20.0 (2023-06-11)"
        },
        {
          "id": "id50",
          "level": 3,
          "text": "Breaking changes"
        },
        {
          "id": "python-3-7-support-dropped-272",
          "level": 4,
          "text": "Python 3.7 support dropped (#272)"
        },
        {
          "id": "id51",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-etl-0-19-1-2023-05-28",
          "level": 2,
          "text": "unihan-etl 0.19.1 (2023-05-28)"
        },
        {
          "id": "id52",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-etl-0-19-0-2023-05-27",
          "level": 2,
          "text": "unihan-etl 0.19.0 (2023-05-27)"
        },
        {
          "id": "id53",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-etl-0-18-1-2022-10-01",
          "level": 2,
          "text": "unihan-etl 0.18.1 (2022-10-01)"
        },
        {
          "id": "id54",
          "level": 3,
          "text": "Dependencies"
        },
        {
          "id": "id55",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-etl-0-18-0-2022-09-11",
          "level": 2,
          "text": "unihan-etl 0.18.0 (2022-09-11)"
        },
        {
          "id": "id56",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "id57",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-etl-0-17-2-2022-08-21",
          "level": 2,
          "text": "unihan-etl 0.17.2 (2022-08-21)"
        },
        {
          "id": "id58",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "unihan-etl-0-17-1-2022-08-21",
          "level": 2,
          "text": "unihan-etl 0.17.1 (2022-08-21)"
        },
        {
          "id": "id59",
          "level": 3,
          "text": "Fixes"
        },
        {
          "id": "unihan-etl-0-17-0-2022-08-21",
          "level": 2,
          "text": "unihan-etl 0.17.0 (2022-08-21)"
        },
        {
          "id": "id60",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-etl-0-16-0-2022-08-20",
          "level": 2,
          "text": "unihan-etl 0.16.0 (2022-08-20)"
        },
        {
          "id": "id61",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "no-cache-259",
          "level": 4,
          "text": "--no-cache (#259)"
        },
        {
          "id": "id62",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-etl-0-15-0-2022-08-29",
          "level": 2,
          "text": "unihan-etl 0.15.0 (2022-08-29)"
        },
        {
          "id": "id63",
          "level": 3,
          "text": "Breaking changes"
        },
        {
          "id": "unihan-etl-0-14-0-2022-08-16",
          "level": 2,
          "text": "unihan-etl 0.14.0 (2022-08-16)"
        },
        {
          "id": "id64",
          "level": 3,
          "text": "Breaking changes"
        },
        {
          "id": "id65",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "id66",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "id67",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-etl-0-13-0-2021-06-16",
          "level": 2,
          "text": "unihan-etl 0.13.0 (2021-06-16)"
        },
        {
          "id": "id68",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "unihan-etl-0-12-0-2021-06-15",
          "level": 2,
          "text": "unihan-etl 0.12.0 (2021-06-15)"
        },
        {
          "id": "id69",
          "level": 3,
          "text": "Breaking changes"
        },
        {
          "id": "id70",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-etl-0-11-0-2020-08-09",
          "level": 2,
          "text": "unihan-etl 0.11.0 (2020-08-09)"
        },
        {
          "id": "id71",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-etl-0-10-4-2020-08-05",
          "level": 2,
          "text": "unihan-etl 0.10.4 (2020-08-05)"
        },
        {
          "id": "id72",
          "level": 3,
          "text": "Fixes"
        },
        {
          "id": "id73",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-etl-0-10-3-2019-08-18",
          "level": 2,
          "text": "unihan-etl 0.10.3 (2019-08-18)"
        },
        {
          "id": "id74",
          "level": 3,
          "text": "Fixes"
        },
        {
          "id": "unihan-etl-0-10-2-2019-08-17",
          "level": 2,
          "text": "unihan-etl 0.10.2 (2019-08-17)"
        },
        {
          "id": "id75",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-etl-0-10-1-2017-09-08",
          "level": 2,
          "text": "unihan-etl 0.10.1 (2017-09-08)"
        },
        {
          "id": "id76",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "id77",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-etl-0-10-0-2017-08-29",
          "level": 2,
          "text": "unihan-etl 0.10.0 (2017-08-29)"
        },
        {
          "id": "id78",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "unihan-revision-25-fields-91",
          "level": 4,
          "text": "UNIHAN Revision 25 fields (#91)"
        },
        {
          "id": "id79",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "id80",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-etl-0-9-5-2017-06-26",
          "level": 2,
          "text": "unihan-etl 0.9.5 (2017-06-26)"
        },
        {
          "id": "id81",
          "level": 3,
          "text": "Fixes"
        },
        {
          "id": "unihan-etl-0-9-4-2017-06-05",
          "level": 2,
          "text": "unihan-etl 0.9.4 (2017-06-05)"
        },
        {
          "id": "id82",
          "level": 3,
          "text": "Fixes"
        },
        {
          "id": "unihan-etl-0-9-3-2017-05-31",
          "level": 2,
          "text": "unihan-etl 0.9.3 (2017-05-31)"
        },
        {
          "id": "id83",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "unihan-etl-0-9-2-2017-05-31",
          "level": 2,
          "text": "unihan-etl 0.9.2 (2017-05-31)"
        },
        {
          "id": "id84",
          "level": 3,
          "text": "Fixes"
        },
        {
          "id": "unihan-etl-0-9-1-2017-05-27",
          "level": 2,
          "text": "unihan-etl 0.9.1 (2017-05-27)"
        },
        {
          "id": "id85",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "unihan-etl-0-9-0-2017-05-26",
          "level": 2,
          "text": "unihan-etl 0.9.0 (2017-05-26)"
        },
        {
          "id": "id86",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "multi-value-expansion-and-empty-field-pruning",
          "level": 4,
          "text": "Multi-value expansion and empty-field pruning"
        },
        {
          "id": "id87",
          "level": 3,
          "text": "Fixes"
        },
        {
          "id": "id88",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "id89",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-etl-0-8-1-2017-05-20",
          "level": 2,
          "text": "unihan-etl 0.8.1 (2017-05-20)"
        },
        {
          "id": "id90",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "unihan-etl-0-8-0-2017-05-17",
          "level": 2,
          "text": "unihan-etl 0.8.0 (2017-05-17)"
        },
        {
          "id": "id91",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "id92",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-etl-0-7-4-2017-05-14",
          "level": 2,
          "text": "unihan-etl 0.7.4 (2017-05-14)"
        },
        {
          "id": "id93",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "unihan-etl-0-7-3-2017-05-13",
          "level": 2,
          "text": "unihan-etl 0.7.3 (2017-05-13)"
        },
        {
          "id": "id94",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-etl-0-7-2-2017-05-13",
          "level": 2,
          "text": "unihan-etl 0.7.2 (2017-05-13)"
        },
        {
          "id": "id95",
          "level": 3,
          "text": "Fixes"
        },
        {
          "id": "unihan-etl-0-7-1-2017-05-12",
          "level": 2,
          "text": "unihan-etl 0.7.1 (2017-05-12)"
        },
        {
          "id": "id96",
          "level": 3,
          "text": "Fixes"
        },
        {
          "id": "unihan-etl-0-7-0-2017-05-12",
          "level": 2,
          "text": "unihan-etl 0.7.0 (2017-05-12)"
        },
        {
          "id": "id97",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "unihan-etl-0-6-3-2017-05-11",
          "level": 2,
          "text": "unihan-etl 0.6.3 (2017-05-11)"
        },
        {
          "id": "id98",
          "level": 3,
          "text": "Fixes"
        },
        {
          "id": "unihan-etl-0-6-2-2017-05-11",
          "level": 2,
          "text": "unihan-etl 0.6.2 (2017-05-11)"
        },
        {
          "id": "id99",
          "level": 3,
          "text": "Fixes"
        },
        {
          "id": "unihan-etl-0-6-1-2017-05-10",
          "level": 2,
          "text": "unihan-etl 0.6.1 (2017-05-10)"
        },
        {
          "id": "id100",
          "level": 3,
          "text": "Fixes"
        },
        {
          "id": "unihan-etl-0-6-0-2017-05-10",
          "level": 2,
          "text": "unihan-etl 0.6.0 (2017-05-10)"
        },
        {
          "id": "id101",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "id102",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-etl-0-5-1-2017-05-08",
          "level": 2,
          "text": "unihan-etl 0.5.1 (2017-05-08)"
        },
        {
          "id": "id103",
          "level": 3,
          "text": "Breaking changes"
        },
        {
          "id": "unihan-etl-0-5-0-2017-05-08",
          "level": 2,
          "text": "unihan-etl 0.5.0 (2017-05-08)"
        },
        {
          "id": "id104",
          "level": 3,
          "text": "Breaking changes"
        },
        {
          "id": "id105",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "unihan-etl-0-4-2-2017-05-07",
          "level": 2,
          "text": "unihan-etl 0.4.2 (2017-05-07)"
        },
        {
          "id": "id106",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-etl-0-4-1-2017-05-07",
          "level": 2,
          "text": "unihan-etl 0.4.1 (2017-05-07)"
        },
        {
          "id": "id107",
          "level": 3,
          "text": "Fixes"
        },
        {
          "id": "unihan-etl-0-4-0-2017-05-07",
          "level": 2,
          "text": "unihan-etl 0.4.0 (2017-05-07)"
        },
        {
          "id": "id108",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "unihan-etl-0-3-0-2017-04-17",
          "level": 2,
          "text": "unihan-etl 0.3.0 (2017-04-17)"
        },
        {
          "id": "id109",
          "level": 3,
          "text": "What’s new"
        }
      ]
    },
    {
      "title": "unihan-etl",
      "description": "Download, search, and export Unicode’s UNIHAN CJK character dataset. Normalizes raw Unicode data files into clean JSON, CSV, or YAML.",
      "section": "",
      "url": "/",
      "markdownUrl": "/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "unihan-etl"
        },
        {
          "id": "install",
          "level": 2,
          "text": "Install"
        },
        {
          "id": "at-a-glance",
          "level": 2,
          "text": "At a glance"
        }
      ]
    },
    {
      "title": "App directories - unihan_etl._internal.app_dirs",
      "description": "AppDir wrapper for appdirs package.",
      "section": "Documentation",
      "url": "/internals/api/app_dirs/",
      "markdownUrl": "/internals/api/app_dirs.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "App directories - unihan_etl._internal.app_dirs"
        },
        {
          "id": "special-features",
          "level": 2,
          "text": "Special features"
        },
        {
          "id": "unihan_etl._internal.app_dirs.MISSING_DIR",
          "level": 2,
          "text": "MISSING_DIR"
        },
        {
          "id": "unihan_etl._internal.app_dirs.AppDirs",
          "level": 2,
          "text": "AppDirs"
        },
        {
          "id": "unihan_etl._internal.app_dirs.AppDirs._app_dirs",
          "level": 3,
          "text": "_app_dirs"
        },
        {
          "id": "unihan_etl._internal.app_dirs.AppDirs.user_data_dir",
          "level": 3,
          "text": "user_data_dir"
        },
        {
          "id": "unihan_etl._internal.app_dirs.AppDirs.site_data_dir",
          "level": 3,
          "text": "site_data_dir"
        },
        {
          "id": "unihan_etl._internal.app_dirs.AppDirs.user_config_dir",
          "level": 3,
          "text": "user_config_dir"
        },
        {
          "id": "unihan_etl._internal.app_dirs.AppDirs.site_config_dir",
          "level": 3,
          "text": "site_config_dir"
        },
        {
          "id": "unihan_etl._internal.app_dirs.AppDirs.user_cache_dir",
          "level": 3,
          "text": "user_cache_dir"
        },
        {
          "id": "unihan_etl._internal.app_dirs.AppDirs.user_state_dir",
          "level": 3,
          "text": "user_state_dir"
        },
        {
          "id": "unihan_etl._internal.app_dirs.AppDirs.user_log_dir",
          "level": 3,
          "text": "user_log_dir"
        },
        {
          "id": "unihan_etl._internal.app_dirs.AppDirs.__init__",
          "level": 3,
          "text": "__init__()"
        }
      ]
    },
    {
      "title": "Internal API",
      "description": "",
      "section": "Documentation",
      "url": "/internals/api/",
      "markdownUrl": "/internals/api/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Internal API"
        }
      ]
    },
    {
      "title": "Internals",
      "description": "Internal module reference for contributors and plugin authors.",
      "section": "Documentation",
      "url": "/internals/",
      "markdownUrl": "/internals/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Internals"
        }
      ]
    },
    {
      "title": "Migration notes",
      "description": "Migration and deprecation notes for unihan-etl are here, see history as well.",
      "section": "More",
      "url": "/migration/",
      "markdownUrl": "/migration.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Migration notes"
        },
        {
          "id": "next-release",
          "level": 2,
          "text": "Next release"
        },
        {
          "id": "unihan-etl-0-40-0-2026-01-24",
          "level": 2,
          "text": "unihan-etl 0.40.0 (2026-01-24)"
        },
        {
          "id": "cli-now-requires-explicit-subcommand-344",
          "level": 3,
          "text": "CLI now requires explicit subcommand (#344)"
        },
        {
          "id": "quick-migration",
          "level": 4,
          "text": "Quick migration"
        },
        {
          "id": "command-mapping",
          "level": 4,
          "text": "Command mapping"
        },
        {
          "id": "new-subcommands",
          "level": 4,
          "text": "New subcommands"
        },
        {
          "id": "scripts-and-automation",
          "level": 4,
          "text": "Scripts and automation"
        },
        {
          "id": "python-api-unchanged",
          "level": 4,
          "text": "Python API unchanged"
        },
        {
          "id": "unihan-etl-0-22-0-2023-06-17",
          "level": 2,
          "text": "unihan-etl 0.22.0 (2023-06-17)"
        },
        {
          "id": "move-unihan-etl-process-to-unihan-etl-core-284",
          "level": 3,
          "text": "Move unihan_etl.process to unihan_etl.core (#284)"
        },
        {
          "id": "options-is-now-a-dataclass-object-280",
          "level": 3,
          "text": "Options is now a dataclass object (#280)"
        }
      ]
    },
    {
      "title": "Code Style",
      "description": "unihan-etl uses ruff for both formatting and linting.",
      "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": "unihan-etl is part of the cihai project. Development conventions, issue triage, and PR guidelines follow the shared cihai contributing guide:",
      "section": "Documentation",
      "url": "/project/contributing/",
      "markdownUrl": "/project/contributing.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Contributing"
        },
        {
          "id": "quick-start",
          "level": 2,
          "text": "Quick start"
        },
        {
          "id": "continuous-testing",
          "level": 2,
          "text": "Continuous testing"
        }
      ]
    },
    {
      "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": "unihan-etl follows semantic versioning. Until 1.0, minor releases may include breaking API changes.",
      "section": "Documentation",
      "url": "/project/releasing/",
      "markdownUrl": "/project/releasing.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Releasing"
        },
        {
          "id": "version-policy",
          "level": 2,
          "text": "Version policy"
        },
        {
          "id": "release-checklist",
          "level": 2,
          "text": "Release checklist"
        }
      ]
    },
    {
      "title": "Quickstart",
      "description": "Assure you have at least python >= 3.7.",
      "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": "commands",
          "level": 2,
          "text": "Commands"
        },
        {
          "id": "pythonics",
          "level": 2,
          "text": "Pythonics"
        }
      ]
    },
    {
      "title": "Frequently Asked Questions",
      "description": "… Why are some fields, e.g. kTotalStrokes, in lists when there’s seemingly not any multi-value data?",
      "section": "Documentation",
      "url": "/topics/faq/",
      "markdownUrl": "/topics/faq.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Frequently Asked Questions"
        }
      ]
    },
    {
      "title": "Topics",
      "description": "The Unicode Han Database: scope, structure, and field categories.",
      "section": "Documentation",
      "url": "/topics/",
      "markdownUrl": "/topics/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Topics"
        }
      ]
    },
    {
      "title": "About UNIHAN",
      "description": "There are many languages and writing systems around the world. Computers internally use numbers to represent characters in writing systems. As computers became more prominent, hundreds of encoding ...",
      "section": "Documentation",
      "url": "/topics/unihan/",
      "markdownUrl": "/topics/unihan.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "About UNIHAN"
        },
        {
          "id": "languages-computers-and-you",
          "level": 2,
          "text": "Languages, Computers, and You"
        },
        {
          "id": "what-is-unihan",
          "level": 2,
          "text": "What is UNIHAN?"
        },
        {
          "id": "the-database",
          "level": 2,
          "text": "The database"
        },
        {
          "id": "the-problem",
          "level": 2,
          "text": "The problem"
        }
      ]
    }
  ]
}
