Source code for unipy_nlp._backend

"""Backend Support Module.
"""

# %%

import os
import re
import matplotlib.font_manager as fm
import subprocess
import importlib
from . import __BUILD_OK__


__all__ = []
__all__ += [
    'build_mecab',
    'reset_mecabrc',
]
__all__ += [
    '__DIR_EXIST_OK__',
    'PKG_NAME',
    'PKG_PATH',
    'RESOURCE_PATH',
    'FONT_PATH',
    'MECAB_RESOURCE_PATH',
    'MECAB_PATH',
    'MECAB_BIN_DIR',
    'MECAB_LIB_DIR',
    'MECAB_LIBEXEC_DIR',
    'MECAB_INSTALLED_DIC_PATH',
    'MECAB_SOURCE_DIC_PATH',
    'MECABRC_FILE',
    'MECAB_RCDIC_PATH',
]



font_dict = {
    path.split('/')[-1][:-4]: path
    for path in fm.get_fontconfig_fonts()
    if 'nanum' in path.lower().split('/')[-1]
}

for _font_nm, _font_file in font_dict.items():
    subprocess.call(['cp', _font_file, './unipy_nlp/_resources/fonts/'])


# %%

PKG_NAME = 'unipy_nlp'
PKG_PATH = os.path.abspath(os.path.dirname(__file__))

__DIR_EXIST_OK__ = os.path.isdir(os.path.join(PKG_PATH, '_resources'))


RESOURCE_PATH = os.path.join(
    PKG_PATH,
    '_resources',
)
FONT_PATH = os.path.join(
    PKG_PATH,
    '_resources',
    'fonts',
)
MECAB_RESOURCE_PATH = os.path.join(
    PKG_PATH,
    '_resources',
    'mecab',
)

MECAB_PATH = os.path.join(
    MECAB_RESOURCE_PATH,
    'mecab',
)
MECAB_BIN_DIR = os.path.join(
    PKG_PATH,
    '_resources',
    'mecab',
    'bin',
)
MECAB_LIB_DIR = os.path.join(
    MECAB_PATH,
    'lib',
)
MECAB_LIBEXEC_DIR = os.path.join(
    MECAB_PATH,
    'libexec',
    'mecab',
)
MECAB_INSTALLED_DIC_PATH = os.path.join(
    MECAB_PATH,
    'lib/mecab/dic/mecab-ko-dic',
)
MECAB_SOURCE_DIC_PATH = os.path.join(
    RESOURCE_PATH,
    'mecab/mecab-ko-dic',
)

MECABRC_FILE = os.path.join(
    MECAB_PATH,
    'etc',
    'mecabrc',
)
MECAB_RCDIC_PATH = os.path.join(
    MECAB_PATH,
    'dic',
)

[docs]def build_mecab(): output = subprocess.call( ['bash', os.path.join(MECAB_RESOURCE_PATH, 'build_mecab.sh')] ) with open(os.path.join(PKG_PATH, '__BUILD_OK__.py'), 'w') as f: f.write("__BUILD_OK__ = True") importlib.reload(__BUILD_OK__) print(output)
def reset_mecabrc(): with open(MECABRC_FILE, 'r') as rcfile: rc_str = rcfile.read() replaced = re.sub(r"(dicdir = )(.*)", r"\1" + MECAB_RCDIC_PATH, rc_str) with open(MECABRC_FILE, 'w') as rcfile: rcfile.write(replaced) print(f"'mecabrc' has been changed: '{MECAB_RCDIC_PATH}'")