# Path: libeclectus/util.py
# FILE_PATHS = {'default': [u'/usr/local/share/eclectus',
#         u'/usr/share/eclectus'],
#     'cmn-caen-tan_ogg': [u'/usr/local/share/eclectus/cmn-caen-tan',
#         u'/usr/share/eclectus/cmn-caen-tan'],
#     'chi-balm-hsk1_ogg': [u'/usr/local/share/eclectus/chi-balm-hsk1',
#         u'/usr/share/eclectus/chi-balm-hsk1'],
#     'bw.png.segment': [
#         u'/usr/local/share/eclectus/bw.png.segment/bw.png.segment',
#         u'/usr/share/eclectus/bw.png.segment/bw.png.segment'],
#     'jbw.png.segment': [
#         u'/usr/local/share/eclectus/bw.png.segment/jbw.png.segment',
#         u'/usr/share/eclectus/bw.png.segment/jbw.png.segment'],
#     'tbw.png.segment': [
#         u'/usr/local/share/eclectus/bw.png.segment/tbw.png.segment',
#         u'/usr/share/eclectus/bw.png.segment/tbw.png.segment'],
#     'bw.png': [u'/usr/local/share/eclectus/bw.png/bw.png',
#         u'/usr/share/eclectus/bw.png/bw.png'],
#     'jbw.png': [u'/usr/local/share/eclectus/bw.png/jbw.png',
#         u'/usr/share/eclectus/bw.png/jbw.png'],
#     'tbw.png': [u'/usr/local/share/eclectus/bw.png/tbw.png',
#         u'/usr/share/eclectus/bw.png/tbw.png'],
#     'order.gif': [u'/usr/local/share/eclectus/order.gif/order.gif',
#         u'/usr/share/eclectus/order.gif/order.gif'],
#     'jorder.gif': [u'/usr/local/share/eclectus/order.gif/jorder.gif',
#         u'/usr/share/eclectus/order.gif/jorder.gif'],
#     'torder.gif': [u'/usr/local/share/eclectus/order.gif/torder.gif',
#         u'/usr/share/eclectus/order.gif/torder.gif'],
#     'red.png': [u'/usr/local/share/eclectus/red.png/red.png',
#         u'/usr/share/eclectus/red.png/red.png'],
#     'jred.png': [u'/usr/local/share/eclectus/red.png/jred.png',
#         u'/usr/share/eclectus/red.png/jred.png'],
#     }
# UNICODE_SCRIPT_CLASSES = {'Han': [('2E80', '2E99'), ('2E9B', '2EF3'),
#         ('2F00', '2FD5'), '3005', '3007', ('3021', '3029'),
#         ('3038', '303A'), '303B', ('3400', '4DB5'), ('4E00', '9FCB'),
#         ('F900', 'FA2D'), ('FA30', 'FA6D'), ('FA70', 'FAD9'),
#         ('20000', '2A6D6'), ('2A700', '2B734'), ('2F800', '2FA1D')],
#     'Hiragana': [('3041', '3096'), ('309D', '309E'), '309F'],
#     'Katakana': [('30A1', '30FA'), ('30FD', '30FE'), '30FF',
#         ('31F0', '31FF'), ('32D0', '32FE'), ('3300', '3357'),
#         ('FF66', 'FF6F'), ('FF71', 'FF9D')],
#     'Hangul': [('1100', '1159'), ('115F', '11A2'), ('11A8', '11F9'),
#         ('3131', '318E'), ('3200', '321E'), ('3260', '327E'),
#         ('AC00', 'D7A3'), ('FFA0', 'FFBE'), ('FFC2', 'FFC7'),
#         ('FFCA', 'FFCF'), ('FFD2', 'FFD7'), ('FFDA', 'FFDC')],
#     'Bopomofo': [('3105', '312D'), ('31A0', '31B7')],
# }
# def locatePath(name):
# def encodeBase64(string):
# def decodeBase64(string):
# def hasFontAvailability():
# def fontExists(fontFamily):
# def fontHasChar(fontFamily, char):
# def getCJKScriptClass(char):
# def getDatabaseConfiguration(databaseUrl=None):
# def getDatabaseUrl():
# def getAttachableDatabases():
# def attr(attr, value=True):
#     def newFunc(func):
# def cachedproperty(fget):
#     def fget_wrapper(self):
#     def fdel(self):


import locale
import types
import sys
import os
import re
import itertools
import xml.sax
import bz2
        import codecs
        import os.path as path
        import codecs
        import os.path as path
        import codecs
        import unicodedata
            import glob
from datetime import datetime
from sqlalchemy import Table, Column, Integer, String, Text, DateTime, Index
from sqlalchemy.sql import and_, or_, not_
from sqlalchemy import select
from cjklib import characterlookup
from cjklib.reading import ReadingFactory
from cjklib.build import builder, cli, warn
from cjklib import exception
from cjklib.util import UnicodeCSVFileIterator, CharacterRangeIterator
from libeclectus import util
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
"""





class UpdateVersionBuilder(builder.EntryGeneratorBuilder):
    """Table for keeping track of which date the release was."""
    PROVIDES = 'UpdateVersion'
    COLUMNS = ['TableName', 'ReleaseDate']
    PRIMARY_KEYS = ['TableName']
    COLUMN_TYPES = {'TableName': String(255), 'ReleaseDate': DateTime()}

    def getGenerator(self):
        return iter([])


class KanaExtendedCharacterSetBuilder(object):
    BASE_BUILDER_CLASS = None

    def toTuple(self, iterator):
        for char in iterator:
            yield (char, )

    def getGenerator(self):
        base = self.BASE_BUILDER_CLASS.getGenerator(self)

        kanaRanges = []

# Path: libeclectus/util.py
# FILE_PATHS = {'default': [u'/usr/local/share/eclectus',
#         u'/usr/share/eclectus'],
#     'cmn-caen-tan_ogg': [u'/usr/local/share/eclectus/cmn-caen-tan',
#         u'/usr/share/eclectus/cmn-caen-tan'],
#     'chi-balm-hsk1_ogg': [u'/usr/local/share/eclectus/chi-balm-hsk1',
#         u'/usr/share/eclectus/chi-balm-hsk1'],
#     'bw.png.segment': [
#         u'/usr/local/share/eclectus/bw.png.segment/bw.png.segment',
#         u'/usr/share/eclectus/bw.png.segment/bw.png.segment'],
#     'jbw.png.segment': [
#         u'/usr/local/share/eclectus/bw.png.segment/jbw.png.segment',
#         u'/usr/share/eclectus/bw.png.segment/jbw.png.segment'],
#     'tbw.png.segment': [
#         u'/usr/local/share/eclectus/bw.png.segment/tbw.png.segment',
#         u'/usr/share/eclectus/bw.png.segment/tbw.png.segment'],
#     'bw.png': [u'/usr/local/share/eclectus/bw.png/bw.png',
#         u'/usr/share/eclectus/bw.png/bw.png'],
#     'jbw.png': [u'/usr/local/share/eclectus/bw.png/jbw.png',
#         u'/usr/share/eclectus/bw.png/jbw.png'],
#     'tbw.png': [u'/usr/local/share/eclectus/bw.png/tbw.png',
#         u'/usr/share/eclectus/bw.png/tbw.png'],
#     'order.gif': [u'/usr/local/share/eclectus/order.gif/order.gif',
#         u'/usr/share/eclectus/order.gif/order.gif'],
#     'jorder.gif': [u'/usr/local/share/eclectus/order.gif/jorder.gif',
#         u'/usr/share/eclectus/order.gif/jorder.gif'],
#     'torder.gif': [u'/usr/local/share/eclectus/order.gif/torder.gif',
#         u'/usr/share/eclectus/order.gif/torder.gif'],
#     'red.png': [u'/usr/local/share/eclectus/red.png/red.png',
#         u'/usr/share/eclectus/red.png/red.png'],
#     'jred.png': [u'/usr/local/share/eclectus/red.png/jred.png',
#         u'/usr/share/eclectus/red.png/jred.png'],
#     }
# UNICODE_SCRIPT_CLASSES = {'Han': [('2E80', '2E99'), ('2E9B', '2EF3'),
#         ('2F00', '2FD5'), '3005', '3007', ('3021', '3029'),
#         ('3038', '303A'), '303B', ('3400', '4DB5'), ('4E00', '9FCB'),
#         ('F900', 'FA2D'), ('FA30', 'FA6D'), ('FA70', 'FAD9'),
#         ('20000', '2A6D6'), ('2A700', '2B734'), ('2F800', '2FA1D')],
#     'Hiragana': [('3041', '3096'), ('309D', '309E'), '309F'],
#     'Katakana': [('30A1', '30FA'), ('30FD', '30FE'), '30FF',
#         ('31F0', '31FF'), ('32D0', '32FE'), ('3300', '3357'),
#         ('FF66', 'FF6F'), ('FF71', 'FF9D')],
#     'Hangul': [('1100', '1159'), ('115F', '11A2'), ('11A8', '11F9'),
#         ('3131', '318E'), ('3200', '321E'), ('3260', '327E'),
#         ('AC00', 'D7A3'), ('FFA0', 'FFBE'), ('FFC2', 'FFC7'),
#         ('FFCA', 'FFCF'), ('FFD2', 'FFD7'), ('FFDA', 'FFDC')],
#     'Bopomofo': [('3105', '312D'), ('31A0', '31B7')],
# }
# def locatePath(name):
# def encodeBase64(string):
# def decodeBase64(string):
# def hasFontAvailability():
# def fontExists(fontFamily):
# def fontHasChar(fontFamily, char):
# def getCJKScriptClass(char):
# def getDatabaseConfiguration(databaseUrl=None):
# def getDatabaseUrl():
# def getAttachableDatabases():
# def attr(attr, value=True):
#     def newFunc(func):
# def cachedproperty(fget):
#     def fget_wrapper(self):
#     def fdel(self):


# Path: libeclectus/buildtables.py
import locale
import types
import sys
import os
import re
import itertools
import xml.sax
import bz2
        import codecs
        import os.path as path
        import codecs
        import os.path as path
        import codecs
        import unicodedata
            import glob
from datetime import datetime
from sqlalchemy import Table, Column, Integer, String, Text, DateTime, Index
from sqlalchemy.sql import and_, or_, not_
from sqlalchemy import select
from cjklib import characterlookup
from cjklib.reading import ReadingFactory
from cjklib.build import builder, cli, warn
from cjklib import exception
from cjklib.util import UnicodeCSVFileIterator, CharacterRangeIterator
from libeclectus import util

along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
"""





class UpdateVersionBuilder(builder.EntryGeneratorBuilder):
    """Table for keeping track of which date the release was."""
    PROVIDES = 'UpdateVersion'
    COLUMNS = ['TableName', 'ReleaseDate']
    PRIMARY_KEYS = ['TableName']
    COLUMN_TYPES = {'TableName': String(255), 'ReleaseDate': DateTime()}

    def getGenerator(self):
        return iter([])


class KanaExtendedCharacterSetBuilder(object):
    BASE_BUILDER_CLASS = None

    def toTuple(self, iterator):
        for char in iterator:
            yield (char, )

    def getGenerator(self):
        base = self.BASE_BUILDER_CLASS.getGenerator(self)

        kanaRanges = []

        kanaRanges.extend(util.UNICODE_SCRIPT_CLASSES['Hiragana'])